Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como excluir arquivos no SQL Server 2019


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\';