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.