Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment supprimer des fichiers dans SQL Server 2019

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