No SQL Server 2019, você pode usar os
sys.xp_delete_files
procedimento armazenado para excluir um arquivo no sistema de arquivos. Esse procedimento armazenado foi introduzido no SQL Server 2019 e pode ser usado em conjunto com
sys.xp_copy_file
e sys.xp_copy_files
(ambos também foram introduzidos no SQL Server 2019), que permitem copiar arquivos. Antes do SQL Server 2019, você precisaria usar
xp_cmdshell
, que gera um shell de comando do Windows e passa uma string para execução. Os novos procedimentos armazenados introduzidos no SQL Server 2019 permitem copiar e excluir arquivos sem depender de xp_cmdshell
. Exemplo 1 – Excluir 1 arquivo
Aqui está um exemplo de exclusão de um único arquivo.
Exemplo no Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Executei este código no meu Mac, que usa o SQL Server 2019 no Linux. Isso excluiu com sucesso um arquivo chamado
albums2.csv
(caminho completo /var/opt/mssql/data/samples/albums2.csv
). Para copiar arquivos em um sistema Windows, você precisa usar a convenção de caminho do Windows.
Exemplo no Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Obviamente, a localização exata dependerá da sua situação.
Exemplo 2 – Excluir vários arquivos
Você pode usar o mesmo procedimento para excluir vários arquivos.
Exemplo no Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
Nesse caso, excluí todos os arquivos no
/var/opt/mssql/data/samples/final
diretório que começa com albums
e termine com .csv
. Eu uso o asterisco (*
) curinga para selecionar arquivos que podem incluir outros caracteres após os albums
papel. Exemplo no Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Exemplo 3 – Excluir pastas
Você pode usar o mesmo procedimento para excluir a pasta inteira.
Exemplo no Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
Nesse caso, excluí o
/var/opt/mssql/data/samples/final
diretório completamente. Exemplo no Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';