Två nya lagrade procedurer introducerade i SQL Server 2019 är sys.xp_copy_file
och sys.xp_copy_files
, som 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 filer utan att förlita dig på xp_cmdshell
.
Exempel 1 – Kopiera 1 fil
Du kan använda sys.xp_copy_file
för att kopiera en enda fil. Genom att använda denna lagrade procedur kan du även namnge den nya filen.
Exempel på Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Jag körde den här koden framgångsrikt på min Mac, som använder SQL Server 2019 på Linux.
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_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Exempel 2 – Kopiera flera filer
Du kan använda sys.xp_copy_files
för att kopiera flera filer.
Exempel på Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Här är jag i samma mapp som föregående exempel. I det här fallet kopierade jag alla filer 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.
Det här exemplet kopierar filerna till /var/opt/mssql/data/samples/final
katalog.
Exempel på Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Ta bort filer
SQL Server 2019 introducerade också sys.xp_delete_files
lagrad procedur, som gör att du kan radera filer. Se Hur man tar bort filer i SQL Server 2019 för exempel på hur man tar bort filerna som skapats i den här artikeln.