Dwie nowe procedury składowane wprowadzone w SQL Server 2019 to sys.xp_copy_file
i sys.xp_copy_files
, które umożliwiają kopiowanie plików.
Przed SQL Server 2019 trzeba było użyć xp_cmdshell
, który tworzy powłokę poleceń systemu Windows i przekazuje ciąg do wykonania. Nowe procedury składowane wprowadzone w SQL Server 2019 umożliwiają kopiowanie plików bez polegania na xp_cmdshell
.
Przykład 1 – Kopiuj 1 plik
Możesz użyć sys.xp_copy_file
skopiować pojedynczy plik. Korzystanie z tej zapisanej procedury umożliwia również nazwanie nowego pliku.
Przykład w systemie Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Pomyślnie uruchomiłem ten kod na moim Macu, który korzysta z SQL Server 2019 w systemie Linux.
Aby skopiować pliki w systemie Windows, musisz użyć konwencji ścieżki Windows.
Przykład w systemie Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Przykład 2 – Kopiowanie wielu plików
Możesz użyć sys.xp_copy_files
skopiować wiele plików.
Przykład w systemie Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Tutaj jestem w tym samym folderze, co w poprzednim przykładzie. W tym przypadku skopiowałem wszystkie pliki, które zaczynają się od albums
i zakończ .csv
. Używam gwiazdki (*
) symbol wieloznaczny, aby wybrać pliki, które mogą zawierać inne znaki po albums
część.
Ten przykład kopiuje pliki do /var/opt/mssql/data/samples/final
katalog.
Przykład w systemie Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Usuwanie plików
SQL Server 2019 wprowadził również sys.xp_delete_files
procedura składowana, która umożliwia usuwanie plików. Zobacz Jak usunąć pliki w SQL Server 2019, aby zapoznać się z przykładami usuwania plików utworzonych w tym artykule.