To nye lagrede procedurer introduceret i SQL Server 2019 er sys.xp_copy_file
og sys.xp_copy_files
, som giver dig mulighed for at kopiere filer.
Før SQL Server 2019 skal du bruge xp_cmdshell
, som afføder en Windows-kommandoskall og sender en streng til eksekvering. De nye lagrede procedurer introduceret i SQL Server 2019 giver dig mulighed for at kopiere filer uden at stole på xp_cmdshell
.
Eksempel 1 – Kopier 1 fil
Du kan bruge sys.xp_copy_file
at kopiere en enkelt fil. Ved at bruge denne lagrede procedure kan du også navngive den nye fil.
Eksempel på Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Jeg kørte med succes denne kode på min Mac, som bruger SQL Server 2019 på Linux.
For at kopiere filer på et Windows-system skal du bruge Windows-stikonventionen.
Eksempel på Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Eksempel 2 – Kopier flere filer
Du kan bruge sys.xp_copy_files
for at kopiere flere filer.
Eksempel på Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Her er jeg i samme mappe som det forrige eksempel. I dette tilfælde kopierede jeg alle filer, der starter med albums
og afslutte med .csv
. Jeg bruger stjernen (*
) jokertegn for at vælge filer, der kan indeholde andre tegn efter albums
del.
Dette eksempel kopierer filerne til /var/opt/mssql/data/samples/final
bibliotek.
Eksempel på Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Sletning af filer
SQL Server 2019 introducerede også sys.xp_delete_files
lagret procedure, som giver dig mulighed for at slette filer. Se Sådan sletter du filer i SQL Server 2019 for eksempler på sletning af filer, der er oprettet i denne artikel.