コマンドラインからSQL Serverデータベースをバックアップおよび復元する
SQL Server保守計画の最も重要な部分は、データベースを定期的にバックアップすることです。データベースをバックアップするには、データベースのMDFファイルとLDFファイルを単純にコピーすることはできません。SQLServerにこれらのファイルがロックされているからです。代わりに、SQL Serverを介して本当のバックアップファイルを作成する必要があります。.
これは、SQL Management Studio内でメンテナンスプランを作成することで実現できますが、SQL Serverの無料Expressエディションではこのインターフェイスは提供されていません。これを回避するには、Windowsの管理者としてログインしているときに、以下のコマンドを実行してデータベースを簡単にバックアップします。
SqlCmd -E -S Server_Name -Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X:PathToBackupLocation [Name_of_Database] .bak ""
以下の例は役に立ちます.
デフォルトのSQL Serverインスタンス:
SqlCmd-E -S MyServer-Q「データベース[MyDB] TO DISK = "D:BackupsMyDB.bak"」
名前付きSQL Serverインスタンス
SqlCmd -E -S MyServerMyInstance -Q「データベース[MyDB] TO DISK = "D:BackupsMyDB.bak"」
上記では、完全に復元可能な「MyDB」のバックアップコピーを「D:BackupsMyDB.bak」ファイルに作成し、これを災害復旧に使用できます。もちろん、バックアップの場所とファイルを必要なものに変更することはできますが、ローカルコンピュータ上に存在するフォルダの場所を必ず指定してください。このバックアップファイルは、テープドライブまたは他の外部バックアップ場所にコピーできます。.
よくある質問は、「バックアップファイルをマッピングされたドライブまたはUNCの場所に作成することはできますか?」です。これは、SQL ServerのWindowsサービスが、ローカルマシンにしかアクセスできないユーザーアカウントとして実行されているためです。サービスを実行しているアカウントを変更することもできますが、セキュリティ上の理由からこの方法はお勧めできません。.
コマンドラインからのデータベースバックアップの復元
バックアップファイルからデータベースを復元するには、単に次のコマンドを使用します。
SqlCmd -E -S Server_Name -Q「データベースの復元[データベースの名前] FROM DISK = "X:PathToBackupFile [ファイル名] .bak"」
例えば:
SqlCmd -E -S MyServer -Q「データベースの復元[MyDB]ディスクから "=" D:BackupsMyDB.bak "」
上記のコマンドは、バックアップファイル「D:BackupsMyDB.bak」に保存されているデータから「MyDB」のバックアップを復元します。バックアップファイルの作成後にMyDBに加えられた変更はすべて失われます。.
上記のコマンドを使用するときに覚えておくべき重要なことは、それがそれぞれのバックアップファイルが作成されたのと同じSQL Serverで使用されることを意図しているということです。 SQLバックアップファイルには、バックアップファイル内のデータファイルをどこでどのようにコピーするかを制御する「舞台裏」の情報が格納されています。別のSQL Serverからバックアップを復元している場合、バックアップファイル内のパスの場所が復元先のサーバーと一致しない可能性があり、エラーが発生します。これは回避できますが、SQL Management Studioツールを使用して別のSQL Serverで作成されたバックアップを復元する方がはるかに簡単です。.
注:上記のコマンドはSQL 2005以降(すべてのエディション)で機能します。 SQL 2000以前の場合は、 'SqlCmd'を 'oSql'に置き換えます。.