Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eliminare i file in SQL Server 2019

In SQL Server 2019, puoi utilizzare sys.xp_delete_files stored procedure per eliminare un file nel file system.

Questa procedura memorizzata è stata introdotta in SQL Server 2019 e può essere utilizzata insieme a sys.xp_copy_file e sys.xp_copy_files (entrambi introdotti anche in SQL Server 2019), che consentono di copiare file.

Prima di SQL Server 2019, dovresti usare xp_cmdshell , che genera una shell dei comandi di Windows e passa una stringa per l'esecuzione. Le nuove stored procedure introdotte in SQL Server 2019 consentono di copiare ed eliminare file senza fare affidamento su xp_cmdshell .

Esempio 1 – Elimina 1 file

Ecco un esempio di eliminazione di un singolo file.

Esempio su Linux:

EXEC master.sys.xp_delete_files
'/var/opt/mssql/data/samples/albums2.csv';

Ho eseguito questo codice sul mio Mac, che utilizza SQL Server 2019 su Linux. Questo ha eliminato con successo un file chiamato albums2.csv (percorso completo /var/opt/mssql/data/samples/albums2.csv ).

Per copiare file su un sistema Windows, devi utilizzare la convenzione del percorso di Windows.

Esempio su Windows:

EXEC master.sys.xp_delete_files
'D:\mssql\data\samples\albums2.csv';

Ovviamente, la posizione esatta dipenderà dalla tua situazione.

Esempio 2:eliminare più file

Puoi utilizzare la stessa procedura per eliminare più file.

Esempio su Linux:

EXEC master.sys.xp_delete_files
'/var/opt/mssql/data/samples/final/albums*.csv';

In questo caso, ho eliminato tutti i file in /var/opt/mssql/data/samples/final directory che iniziano con albums e termina con .csv . Uso l'asterisco (* ) jolly per selezionare i file che possono includere altri caratteri dopo gli albums parte.

Esempio su Windows:

EXEC master.sys.xp_delete_files
'D:\mssql\data\samples\final\albums*.csv';

Esempio 3 – Elimina cartelle

Puoi usare la stessa procedura per eliminare l'intera cartella.

Esempio su Linux:

EXEC master.sys.xp_delete_files
'/var/opt/mssql/data/samples/final/';

In questo caso, ho eliminato /var/opt/mssql/data/samples/final directory del tutto.

Esempio su Windows:

EXEC master.sys.xp_delete_files
'D:\mssql\data\samples\final\';