In SQL Server 2019 können Sie die sys.xp_delete_files
verwenden gespeicherte Prozedur zum Löschen einer Datei im Dateisystem.
Diese gespeicherte Prozedur wurde in SQL Server 2019 eingeführt und kann in Verbindung mit sys.xp_copy_file
verwendet werden und sys.xp_copy_files
(beide wurden auch in SQL Server 2019 eingeführt), mit denen Sie Dateien kopieren können.
Vor SQL Server 2019 mussten Sie xp_cmdshell
verwenden , die eine Windows-Befehlsshell erzeugt und eine Zeichenfolge zur Ausführung übergibt. Die neuen gespeicherten Prozeduren, die in SQL Server 2019 eingeführt wurden, ermöglichen es Ihnen, Dateien zu kopieren und zu löschen, ohne sich auf xp_cmdshell
verlassen zu müssen .
Beispiel 1 – 1 Datei löschen
Hier ist ein Beispiel für das Löschen einer einzelnen Datei.
Beispiel unter Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Ich habe diesen Code auf meinem Mac ausgeführt, der SQL Server 2019 unter Linux verwendet. Dadurch wurde eine Datei namens albums2.csv
erfolgreich gelöscht (vollständiger Pfad /var/opt/mssql/data/samples/albums2.csv
).
Um Dateien auf einem Windows-System zu kopieren, müssen Sie die Windows-Pfadkonvention verwenden.
Beispiel unter Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Natürlich hängt der genaue Standort von Ihrer Situation ab.
Beispiel 2 – Mehrere Dateien löschen
Sie können dasselbe Verfahren verwenden, um mehrere Dateien zu löschen.
Beispiel unter Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
In diesem Fall habe ich alle Dateien in /var/opt/mssql/data/samples/final
gelöscht Verzeichnisse, die mit albums
beginnen und enden mit .csv
. Ich verwende das Sternchen (*
) Platzhalter, um Dateien auszuwählen, die andere Zeichen nach dem albums
enthalten können Teil.
Beispiel unter Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Beispiel 3 – Ordner löschen
Sie können das gleiche Verfahren verwenden, um den gesamten Ordner zu löschen.
Beispiel unter Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
In diesem Fall habe ich /var/opt/mssql/data/samples/final
gelöscht Verzeichnis zusammen.
Beispiel unter Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';