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\';