En SQL Server 2019, puede usar sys.xp_delete_files
procedimiento almacenado para eliminar un archivo en el sistema de archivos.
Este procedimiento almacenado se introdujo en SQL Server 2019 y se puede usar junto con sys.xp_copy_file
y sys.xp_copy_files
(ambos también se introdujeron en SQL Server 2019), 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 y eliminar archivos sin depender de xp_cmdshell
.
Ejemplo 1:eliminar 1 archivo
Este es un ejemplo de cómo eliminar un solo archivo.
Ejemplo en Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Ejecuté este código en mi Mac, que usa SQL Server 2019 en Linux. Esto eliminó con éxito un archivo llamado albums2.csv
(ruta completa /var/opt/mssql/data/samples/albums2.csv
).
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_delete_files 'D:\mssql\data\samples\albums2.csv';
Obviamente, la ubicación exacta dependerá de tu situación.
Ejemplo 2:eliminar varios archivos
Puede utilizar el mismo procedimiento para eliminar varios archivos.
Ejemplo en Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
En este caso, eliminé todos los archivos en /var/opt/mssql/data/samples/final
directorio que comienza con albums
y terminar con .csv
. Uso el asterisco (*
) comodín para seleccionar archivos que pueden incluir otros caracteres después de albums
parte.
Ejemplo en Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Ejemplo 3:eliminar carpetas
Puede utilizar el mismo procedimiento para eliminar toda la carpeta.
Ejemplo en Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
En este caso, eliminé el /var/opt/mssql/data/samples/final
directorio por completo.
Ejemplo en Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';