Dvě nové uložené procedury představené v SQL Server 2019 jsou sys.xp_copy_file
a sys.xp_copy_files
, které vám umožňují kopírovat soubory.
Před SQL Server 2019 byste museli použít xp_cmdshell
, který vytvoří příkazový shell Windows a předá řetězec k provedení. Nové uložené procedury představené v SQL Server 2019 vám umožňují kopírovat soubory, aniž byste se spoléhali na xp_cmdshell
.
Příklad 1 – Kopírování 1 souboru
Můžete použít sys.xp_copy_file
zkopírovat jeden soubor. Pomocí této uložené procedury můžete také pojmenovat nový soubor.
Příklad na Linuxu:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Tento kód jsem úspěšně spustil na svém Macu, který používá SQL Server 2019 na Linuxu.
Chcete-li kopírovat soubory v systému Windows, musíte použít konvenci cest systému Windows.
Příklad ve Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Příklad 2 – Kopírování více souborů
Můžete použít sys.xp_copy_files
pro kopírování více souborů.
Příklad na Linuxu:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Zde jsem ve stejné složce jako předchozí příklad. V tomto případě jsem zkopíroval všechny soubory, které začínají albums
a končí na .csv
. Používám hvězdičku (*
) zástupný znak pro výběr souborů, které mohou obsahovat další znaky za albums
část.
Tento příklad zkopíruje soubory do /var/opt/mssql/data/samples/final
adresář.
Příklad ve Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Mazání souborů
SQL Server 2019 také představil sys.xp_delete_files
uložená procedura, která umožňuje mazat soubory. Příklady odstranění souborů vytvořených v tomto článku naleznete v části Jak odstranit soubory v SQL Server 2019.