I SQL Server 2019 kan du använda sys.xp_delete_files
lagrad procedur för att radera en fil i filsystemet.
Denna lagrade procedur introducerades i SQL Server 2019, och den kan användas tillsammans med sys.xp_copy_file
och sys.xp_copy_files
(som båda också introducerades i SQL Server 2019), vilket gör att du kan kopiera filer.
Före SQL Server 2019 skulle du behöva använda xp_cmdshell
, som skapar ett Windows-kommandoskal och skickar in en sträng för exekvering. De nya lagrade procedurerna som introduceras i SQL Server 2019 låter dig kopiera och ta bort filer utan att förlita dig på xp_cmdshell
.
Exempel 1 – Ta bort 1 fil
Här är ett exempel på att ta bort en enskild fil.
Exempel på Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Jag körde den här koden på min Mac, som använder SQL Server 2019 på Linux. Detta raderade en fil som heter albums2.csv
(fullständig sökväg /var/opt/mssql/data/samples/albums2.csv
).
För att kopiera filer på ett Windows-system måste du använda Windows-sökvägskonventionen.
Exempel på Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Uppenbarligen kommer den exakta platsen att bero på din situation.
Exempel 2 – Ta bort flera filer
Du kan använda samma procedur för att radera flera filer.
Exempel på Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
I det här fallet tog jag bort alla filer i /var/opt/mssql/data/samples/final
katalog som börjar med albums
och avsluta med .csv
. Jag använder asterisken (*
) jokertecken för att välja filer som kan innehålla andra tecken efter albums
del.
Exempel på Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Exempel 3 – Ta bort mappar
Du kan använda samma procedur för att radera hela mappen.
Exempel på Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
I det här fallet tog jag bort /var/opt/mssql/data/samples/final
katalogen helt och hållet.
Exempel på Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';