SQL Server 2019で導入された2つの新しいストアドプロシージャは、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';
LinuxでSQLServer2019を使用するMacでこのコードを正常に実行しました。
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
も導入されました ファイルを削除できるストアドプロシージャ。この記事で作成したファイルを削除する例については、SQLServer2019でファイルを削除する方法を参照してください。