Dans SQL Server 2019, vous pouvez utiliser les sys.xp_delete_files
procédure stockée pour supprimer un fichier sur le système de fichiers.
Cette procédure stockée a été introduite dans SQL Server 2019 et peut être utilisée conjointement avec sys.xp_copy_file
et sys.xp_copy_files
(les deux ont également été introduits dans SQL Server 2019), qui vous permettent de copier des fichiers.
Avant SQL Server 2019, vous deviez utiliser xp_cmdshell
, qui génère un shell de commande Windows et transmet une chaîne pour l'exécution. Les nouvelles procédures stockées introduites dans SQL Server 2019 vous permettent de copier et de supprimer des fichiers sans compter sur xp_cmdshell
.
Exemple 1 - Supprimer 1 fichier
Voici un exemple de suppression d'un seul fichier.
Exemple sous Linux :
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
J'ai exécuté ce code sur mon Mac, qui utilise SQL Server 2019 sous Linux. Cela a supprimé avec succès un fichier appelé albums2.csv
(chemin complet /var/opt/mssql/data/samples/albums2.csv
).
Pour copier des fichiers sur un système Windows, vous devez utiliser la convention de chemin Windows.
Exemple sous Windows :
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Évidemment, l'emplacement exact dépendra de votre situation.
Exemple 2 - Supprimer plusieurs fichiers
Vous pouvez utiliser la même procédure pour supprimer plusieurs fichiers.
Exemple sous Linux :
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
Dans ce cas, j'ai supprimé tous les fichiers dans le /var/opt/mssql/data/samples/final
répertoire commençant par albums
et terminez par .csv
. J'utilise l'astérisque (*
) caractère générique pour sélectionner les fichiers qui peuvent inclure d'autres caractères après les albums
partie.
Exemple sous Windows :
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Exemple 3 - Supprimer des dossiers
Vous pouvez utiliser la même procédure pour supprimer tout le dossier.
Exemple sous Linux :
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
Dans ce cas, j'ai supprimé le /var/opt/mssql/data/samples/final
répertoire tout à fait.
Exemple sous Windows :
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';