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でファイルを削除する方法を参照してください。