0

SQL サーバーの 1 か所で立ち往生しています。100 以上のデータベース (.mdf) があります。mdf ファイルの更新されたデータを別の場所にコピーしたいと考えています。初めてすべてのデータベースをC:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATAの場所から切り離し、C:\などの別の場所にコピーしたとしますすべての元のファイルを再アタッチします(SQLサーバーで使用されているため、デタッチします)。これでCドライブにコピーできました。すべてのデータベースから更新されたデータを元の場所からコピーした場所 (c ドライブ内) に定期的にコピーするためのクエリまたは手順が必要です。私はこれについてグーグルで検索し、最初にサービスを停止する解決策を見つけました. しかし、私の会社では24時間シフトで定期的にデータが更新されているため、これはできません。したがって、これを行う機会はありません。また、バッチファイルでテストしました。

xcopy /y /d /r /s /e "C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TestAxle.mdf" "c:\TestAxle.mdf"

しかし、以下のコマンドでもテストされた共有違反のエラーメッセージが表示されます。

copy /y "C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TestAxle.mdf" "c:\TestAxle.mdf"

しかし、ファイルが別のプロセスによって使用されていることも示しています。

更新されたデータを mdf ファイルに定期的にコピーする方法を教えてください。

ありがとう

4

1 に答える 1

1

これは、バックアップを作成しようとしているように思えます。その場合は、代わりに backup コマンドを使用してください。「mdf」ファイルは作成されませんが、バックアップには、未使用のページの内容を含め、元の mdf ファイルに含まれるすべてが含まれます。

CREATE BACKUPコマンド ( http://msdn.microsoft.com/en-us/library/ms187510(v=sql.105).aspx ) を使用したバックアップは、サービスをシャットダウンしたり、データベースへのアクセスをブロックしたりすることなく取得できます。(ほとんどの場合、顕著なパフォーマンスへの影響さえありません。)

また、SQL Server バックアップはトランザクションの一貫性が保証されていることにも注意してください。mdf ファイルのコピー (少なくとも ldf ファイルなしで保持されている場合) は、トランザクションの一貫性が保証されていません。

ファイルはサービスによってロックされているため、mdf ファイルの実際のコピーを取得することはできません。私が考えることができる唯一の方法は、SAN レプリケーションです。

これらの 2 つのオプションがうまくいかない場合は、これらのコピーを使用して何を達成しようとしているのかを報告してください。

于 2013-07-15T12:51:07.750 に答える