W SQL Server 2019 możesz użyć sys.xp_delete_files
procedura składowana, aby usunąć plik w systemie plików.
Ta procedura składowana została wprowadzona w SQL Server 2019 i może być używana w połączeniu z sys.xp_copy_file
i sys.xp_copy_files
(oba zostały również wprowadzone w SQL Server 2019), 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 i usuwanie plików bez polegania na xp_cmdshell
.
Przykład 1 – Usuń 1 plik
Oto przykład usuwania pojedynczego pliku.
Przykład w systemie Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Uruchomiłem ten kod na moim Macu, który korzysta z SQL Server 2019 w systemie Linux. Pomyślnie usunięto plik o nazwie albums2.csv
(pełna ścieżka /var/opt/mssql/data/samples/albums2.csv
).
Aby skopiować pliki w systemie Windows, musisz użyć konwencji ścieżki Windows.
Przykład w systemie Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Oczywiście dokładna lokalizacja będzie zależeć od Twojej sytuacji.
Przykład 2 – Usuń wiele plików
Możesz użyć tej samej procedury, aby usunąć wiele plików.
Przykład w systemie Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
W tym przypadku usunąłem wszystkie pliki w /var/opt/mssql/data/samples/final
katalog zaczynający się od albums
i zakończ .csv
. Używam gwiazdki (*
) symbol wieloznaczny, aby wybrać pliki, które mogą zawierać inne znaki po albums
część.
Przykład w systemie Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Przykład 3 – Usuń foldery
Możesz użyć tej samej procedury, aby usunąć cały folder.
Przykład w systemie Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
W tym przypadku usunąłem /var/opt/mssql/data/samples/final
katalog w całości.
Przykład w systemie Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';