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