В SQL Server 2019 можете да използвате sys.xp_delete_files
съхранена процедура за изтриване на файл от файловата система.
Тази съхранена процедура е въведена в SQL Server 2019 и може да се използва във връзка с sys.xp_copy_file
и sys.xp_copy_files
(и двете са въведени и в SQL Server 2019), които ви позволяват да копирате файлове.
Преди SQL Server 2019 ще трябва да използвате xp_cmdshell
, който създава командна обвивка на Windows и предава низ за изпълнение. Новите съхранени процедури, въведени в SQL Server 2019, ви позволяват да копирате и изтривате файлове, без да разчитате на xp_cmdshell
.
Пример 1 – Изтриване на 1 файл
Ето пример за изтриване на един файл.
Пример за Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/albums2.csv';
Пуснах този код на моя Mac, който използва SQL Server 2019 на Linux. Това успешно изтри файл, наречен albums2.csv
(пълният път /var/opt/mssql/data/samples/albums2.csv
).
За да копирате файлове в система с Windows, ще трябва да използвате конвенцията за пътя на Windows.
Пример за Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\albums2.csv';
Очевидно точното местоположение ще зависи от вашата ситуация.
Пример 2 – Изтриване на няколко файла
Можете да използвате същата процедура, за да изтриете няколко файла.
Пример за Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/albums*.csv';
В този случай изтрих всички файлове в /var/opt/mssql/data/samples/final
директория, която започва с albums
и завършва с .csv
. Използвам звездичката (*
) заместващ знак, за да изберете файлове, които може да включват други знаци след albums
част.
Пример за Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\albums*.csv';
Пример 3 – Изтриване на папки
Можете да използвате същата процедура, за да изтриете цялата папка.
Пример за Linux:
EXEC master.sys.xp_delete_files '/var/opt/mssql/data/samples/final/';
В този случай изтрих /var/opt/mssql/data/samples/final
директория като цяло.
Пример за Windows:
EXEC master.sys.xp_delete_files 'D:\mssql\data\samples\final\';