SQLデータベースをネットワーク共有にバックアップする方法
SQLデータベースを定期的にバックアップすることは必須です。すべてのSQLサーバーデータベースをローカルのハードドライブに簡単にバックアップする方法は既に説明しましたが、これはドライブやシステムの障害から保護するものではありません。この種の災害に対する追加の保護層として、ネットワーク共有上にバックアップをコピーするか直接作成することができます。.
ローカルにバックアップしてからネットワーク共有にコピーする
このタスクを実行するための最も直接的で直接的な方法は、単にデータベースのローカルバックアップを作成してから、それぞれのバックアップファイルをネットワーク共有にコピーすることです。これを行うには、次のようなバッチスクリプトを作成します。
SET LocalFolder = C:プログラムファイルMicrosoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q“データベースMyDBのディスクへのバックアップ= "%LocalFolder%MyDB.bak"”
XCopy“%LocalFolder%MyDB.bak”“ \ 192.168.16.55バックアップデータベース” / Z / V
DEL“%LocalFolder%MyDB.bak”
このスクリプトは次のことを行います(1行ずつ)。
- ローカルSQLバックアップディレクトリに変数を設定します。.
- ローカルのSQLバックアップディレクトリに(Windows認証を使用して)MyDBのSQLバックアップを作成します。.
- ローカルバックアップファイルをネットワーク共有にコピーします。.
- ローカルバックアップファイルを削除します.
繰り返しますが、これは推奨される方法です。バックアップはローカルディスク上に作成されるため、そのまま使用でき、バックアップが失敗する可能性は最小限です。ただし、バックアップファイルのローカルコピーを保存するのに十分なディスク容量がない場合、この操作は失敗します。この場合は、追加のディスク容量を追加するか、ネットワーク共有に直接バックアップする必要があります。.
ネットワーク共有への直接バックアップ
通常、次のようなコマンドを使用してネットワーク共有に直接バックアップを作成しようとしたとき。
SqlCmd -E -Q“データベースMyDBのディスクへのバックアップ= "\ 192.168.16.55BackupDatabasesMyDB.bak"”
ほとんどの場合、次の行に沿ってエラーが発生します。
メッセージ3201、レベル16、状態1、サーバーJF、行1
バックアップデバイス '\ 192.168.16.55BackupDatabasesMyDB.bak'を開けません。オペレーティングシステムエラー5(アクセスが拒否されました).
メッセージ3013、レベル16、状態1、サーバーJF、行1
BACKUP DATABASEが異常終了しています.
このエラーは、Windows認証(-Eスイッチ)とWindowsアカウントを使用して、Windowsエクスプローラを介してファイルにアクセスし、ファイルを共有にコピーする機能としてSQLバックアップコマンドを実行したにもかかわらず発生します。.
この操作が失敗する理由は、SQL Serverサービスが実行されているアカウントの範囲内でSQLコマンドが実行されるためです。コンピュータで[サービス]の一覧を表示すると、ほとんどの場合、SQL Serverサービスは[ログオン]列で[ローカルシステム]または[ネットワークサービス]のいずれかとして実行されます。これらはネットワークにアクセスできないシステムアカウントです。.
このシステムでは、SQL Serverサービスをローカルシステムとして実行しているため、ネットワーク共有コマンドへのバックアップが失敗します。この場合も、ネットワークリソースにアクセスできません。.
SQLがネットワーク共有に直接バックアップできるようにするには、SQL Serverサービスをネットワークリソースにアクセスできるローカルアカウントとして実行する必要があります。.
SQL Serverサービスのプロパティを編集し、[ログオン]タブで、ネットワークアクセス権を持つ代替アカウントとして実行するようにサービスを構成します。.
[OK]をクリックすると、サービスが再起動されるまで設定が有効にならないというプロンプトが表示されます。.
サービスを再開する.
サービスリストに、SQL Serverサービスが設定したアカウントとして実行されていることが表示されます。.
ネットワーク共有に直接バックアップするコマンドを実行すると、次のようになります。
SqlCmd -E -Q“データベースMyDBのディスクへのバックアップ= "\ 192.168.16.55BackupDatabasesMyDB.bak"”
成功のメッセージが表示されます。
データベース 'MyDB'のファイル152ページ、ファイル 'MyDB'の処理済み1.
データベース 'MyDB'、ファイル1のファイル 'MyDB_log'の2ページ処理済み.
BACKUP DATABASEは0.503秒で154ページを正常に処理しました(2.493 MB /秒).
バックアップファイルをネットワーク共有ディレクトリに配置します。
ネットワーク共有の考慮事項
backupコマンドは、資格情報の入力を求められることなくネットワーク共有に直接接続できることを期待していることに注意することが重要です。 SQL Serverサービスを実行するように構成したアカウントには、それぞれの資格情報でアクセスが許可されているネットワーク共有との信頼できる接続が必要です。そうしないと、次のようなエラーが発生する可能性があります。
メッセージ3201、レベル16、状態1、サーバーJF、行1
バックアップデバイス '\ 192.168.16.55BackupDatabasesMyDB.bak'を開けません。オペレーティングシステムエラー1326(ログオン失敗:不明なユーザー名またはパスワードが間違っています。).
メッセージ3013、レベル16、状態1、サーバーJF、行1
BACKUP DATABASEが異常終了しています.
このエラーは、アカウントのユーザー名とパスワードがネットワーク共有によって受け入れられず、コマンドが失敗したことを示します。.
留意すべきもう1つの問題は、バックアップがネットワークリソースに直接実行されるため、ネットワーク接続に問題があるとバックアップが失敗する可能性があることです。このため、安定している(つまり、おそらくVPNではない)ネットワークの場所にのみバックアップするようにしてください。.
セキュリティへの影響
前述のように、ローカルにアクセスしてからネットワーク共有にコピーする方法を使用すると、SQLサービスをローカルシステムアクセスのみのアカウントとして実行できるため、この方法を使用することをお勧めします。.
代替アカウントとしてサービスを実行することで、潜在的なセキュリティ問題への扉を開きます。たとえば、悪意のあるSQLスクリプトが代替アカウントで実行され、ネットワークリソースを攻撃する可能性があります。さらに、それぞれのアカウントに対する変更(パスワードの変更/有効期限またはアカウントの削除/無効化)を行うと、SQL Serverサービスが起動しなくなります。.
代替アカウントを使用してSQL Serverインスタンスを実行する場合は、これらの点に留意することが重要です。適切な予防策が講じられている場合は、これらの機能はわかりませんが、ハードドライブの空き容量を追加してから、ローカルアカウントを使用してSQLサービスを実行できるようにローカルバックアップとコピーを実装してください。.