Dos nuevos procedimientos almacenados introducidos en SQL Server 2019 son sys.xp_copy_file
y sys.xp_copy_files
, que le permiten copiar archivos.
Antes de SQL Server 2019, necesitaría usar xp_cmdshell
, que genera un shell de comandos de Windows y pasa una cadena para su ejecución. Los nuevos procedimientos almacenados introducidos en SQL Server 2019 le permiten copiar archivos sin depender de xp_cmdshell
.
Ejemplo 1:Copiar 1 archivo
Puede usar sys.xp_copy_file
para copiar un solo archivo. El uso de este procedimiento almacenado le permite también nombrar el nuevo archivo.
Ejemplo en Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Ejecuté con éxito este código en mi Mac, que usa SQL Server 2019 en Linux.
Para copiar archivos en un sistema Windows, debe usar la convención de ruta de acceso de Windows.
Ejemplo en Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Ejemplo 2:copiar varios archivos
Puede usar sys.xp_copy_files
para copiar varios archivos.
Ejemplo en Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Aquí estoy en la misma carpeta que el ejemplo anterior. En este caso, copié todos los archivos que comienzan con albums
y terminar con .csv
. Uso el asterisco (*
) comodín para seleccionar archivos que pueden incluir otros caracteres después de albums
parte.
Este ejemplo copia los archivos a /var/opt/mssql/data/samples/final
directorio.
Ejemplo en Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Eliminación de archivos
SQL Server 2019 también introdujo los sys.xp_delete_files
procedimiento almacenado, que le permite eliminar archivos. Consulte Cómo eliminar archivos en SQL Server 2019 para ver ejemplos de cómo eliminar los archivos creados en este artículo.