【SQL Server 2012】バッチ(コマンドプロンプト)でリストア
公開日:
:
最終更新日:2015/01/12
データベース SQL Server 2012, コマンドプロンプト, データベース, リストア
バッチ(コマンドプロンプト)を使って、SQL Server 2012のリストアしてみたいと思います。
個人的には、リストアをバッチファイルで行うってことは、ないかなぁーって思ってます。
まずは、僕の環境。
・OS:Windows Server 2012
・データベース:SQL Server 2012
・リストア対象のDBサーバーホスト名:DBSERVER
・リストア対象のインスタンス:SQLEXPRESS
・リストア対象のデータベース名:db_Sales
・接続ユーザー:Windows認証
・リストア用のバックアップファイル:C:\temp\testdb3.bak
※リストア用のバックアップファイルは、以前にバッチ(コマンドプロンプト)で取得したバックアップファイルです。
sqlcmd -S .\SQLEXPRESS -Q “RESTORE DATABASE db_Sales FROM DISK = N’C:\temp\testdb3.bak’ WITH REPLACE” > C:\temp\restore.log |
※ダブルコーテーションとシングルコーテーションは半角へ変更
↑のコマンドをサーバー上のコマンドプロンプトで実行すれば、対象のデータベースがリストアされます。
■コマンド解説
sqlcmd -S .\SQLEXPRESS -Q “RESTORE DATABASE db_Sales FROM DISK = N’C:\temp\testdb3.bak’ WITH REPLACE” > C:\temp\restore.log |
・sqlcmd
SQL ServerをCUIで管理するツール
・-S DBSERVER\SQLEXPRESS
接続サーバー。僕の場合、ホスト名:DBSERVER、インスタンス名:SQLEXPRESSなので、
DBSERVER\SQLEXPRESS となります。ローカルの場合は、ホスト名を省略して「.\SQLEXPRESS」でもOK。
・-Q “RESTORE DATABASE 【対象データベース】 FROM DISK = N’【リストアファイル名】’ WITH REPLACE”
実行するSQLコマンド。
・ > C:\temp\restore.log
ログファイルの出力先。無くても問題ありません。
■SQLServer認証ユーザーでコマンドを実行する場合、以下のように認証ユーザーとパスワードを追加。
sqlcmd -S DBSERVER\SQLEXPRESS -U 【ログインユーザー名】 -P 【ログインパスワード】 -Q “RESTORE DATABASE db_Sales FROM DISK = N’C:\temp\testdb.bak’ WITH REPLACE” > C:\temp\restore.log |
・-U 【ログインユーザー名】
SQLServer認証ユーザー名。
・-P 【ログインパスワード】
SQLServer認証ユーザーのパスワードを上記のように追加して、実行すれば可能です。
■リストアが失敗するときのエラーその1
メッセージ 3110、レベル 14、状態 1、サーバー DBSERVER\SQLEXPRESS、行 1 ユーザーにはデータベース ‘db_Sales’ を復元する権限がありません。 メッセージ 3013、レベル 16、状態 1、サーバー DBSERVER\SQLEXPRESS、行 1 RESTORE DATABASE が異常終了しています。 |
対処方法は、実行するユーザーに復元する権限がないので、以下のどれかを付与する
・dbo
・sysadminサーバロール
・dbcreatorサーバロール
僕は、実行ユーザーにdbcreator権限を付与してあげて、実際にリストアに成功しました。
【権限付与方法】
1.Management Studioで対象のデータベースへ接続し、
データベース/セキュリティ/ログインの対象ユーザーを右クリック、【プロパティ】
2.ログインのプロパティ画面で【サーバーロール】を選択
3.【dbcreator】にチェックを入れ、OK
■リストアが失敗するときのエラーその2
メッセージ 3101、レベル 16、状態 1、サーバー DBSERVER\SQLEXPRESS、行 1 データベースは使用中なので、排他アクセスを獲得できませんでした。 メッセージ 3013、レベル 16、状態 1、サーバー DBSERVER\SQLEXPRESS、行 1 RESTORE DATABASE が異常終了しています。 |
対処方法は、誰がデータベースにアクセスしているか調べ、データベースから抜けてもらう。
・利用状況モニターで確認する。
リストアなんて基本やらないほうがいいと思いますが…
覚えておいて損はないと思います。
Adsense
関連記事
-
【SQL Server】アンインストール手順
手順としては、http://technet.microsoft.com/ja-jp/library/
-
【SQL Server 2012 Express】Windows Server 2012にインストールしてみる
Windows Server 2012にSQL Server 2012をインストールしてみる。 以
-
【レプリケーション】SQL Server 2012 Expressでレプリケーション
Windows Server 2012のSQL Server 2012 Expressを二台用意して
-
【SQL Server 2012】Management Studioで誰がデータベースに接続しているか調べる。
SQL Server 2012でリアルタイムで接続しているユーザーを確認するには Manageme
-
【SQL Server 2012】Management Studioでサンプルデータベース(mdfファイル)をアタッチ
以前、Windows Server 2012にMicrosoftR SQL ServerR 2012
-
【SQL Server】バックアップ取得日を確認する方法
前回の記事で、SQL Serverのデータベースのリストアした日付を確認するSQLを作りましたが、今
-
【SQLServer2012】バックアップ/リストア方法 リストア編
SQL Server 2012のデータベースをManagement Studioを使用して、リストア
-
【SQL Server 2012】テーブル、カラム、主キー、NULL制約、データ型、長さ、INDEXの有無の一括表示
職場のシステムリプレースに伴い、データベースのテーブル(カラム)の一覧が必要になりました。 普
-
【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか
-
【Management Studio】データベースの定義を取得する方法
あくまでデータベース定義の取得です。 ※データベースのデータを取得する方法ではありません。