Dois novos procedimentos armazenados introduzidos no SQL Server 2019 são
sys.xp_copy_file
e sys.xp_copy_files
, 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 arquivos sem depender de xp_cmdshell
. Exemplo 1 - Copiar 1 arquivo
Você pode usar
sys.xp_copy_file
para copiar um único arquivo. O uso desse procedimento armazenado permite que você também nomeie o novo arquivo. Exemplo no Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Executei com sucesso este código no meu Mac, que usa o SQL Server 2019 no Linux.
Para copiar arquivos em um sistema Windows, você precisa usar a convenção de caminho do Windows.
Exemplo no Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Exemplo 2 – Copiar vários arquivos
Você pode usar
sys.xp_copy_files
para copiar vários arquivos. Exemplo no Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Aqui estou na mesma pasta do exemplo anterior. Neste caso, copiei todos os arquivos que começam com
albums
e termine com .csv
. Eu uso o asterisco (*
) curinga para selecionar arquivos que podem incluir outros caracteres após os albums
papel. Este exemplo copia os arquivos para o
/var/opt/mssql/data/samples/final
diretório. Exemplo no Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Excluindo arquivos
O SQL Server 2019 também introduziu os
sys.xp_delete_files
procedimento armazenado, que permite excluir arquivos. Consulte Como excluir arquivos no SQL Server 2019 para obter exemplos de como excluir os arquivos criados neste artigo.