NMMでコマンド ライン リカバリーを使用してSQLデータベースをリカバリする方法
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
この記事では、VDI
を使用してNMMでバックアップされたSQLデータベースを正常にリストアするための手順について説明します。GUI(Neter user for SQL server GUIまたはSSMSプラグイン)からのリストアに問題がある場合は、コマンド ラインを使用してバックアップからSQLデータベースをリストアすることが必要になる場合があります。GUIからの参照タスクが遅いか、リストアに必要なデータベースがGUIに表示されません。
通常、1 つの DB が
バックアップされると、次のセーブセットが作成されます。1 つの DB のフルバックアップには、次のセーブセットが含まれます。
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb ==> 完全バックアップ セーブセット
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb ==> メタデータ セーブセット。
1 つの DB の増分バックアップには、次のセーブセットがあります。
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> ログ バックアップ セーブセット
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> metadata saveset
各バックアップにはメタデータ セーブセットがあり、常に「incr」レベルで作成され、通常は非常に小さいことに注意してください。このセーブセットには、「NetWorker User for SQL Server」GUIでDBリストを表示できるようにする情報が含まれています。このセーブセットは、各SQL VDIバックアップで作成されます。ただし、手動クローン作成プロセスで誤ってクローン作成用のこのセーブセットが含まれていなかったり、元のセーブセットが存在しなくなったりした場合は、このセーブセットが存在しない可能性があります。この場合は、コマンド ライン リストアが唯一のオプションです。
リカバリーする必要があるバックアップを特定したら、コマンド ラインを作成できます。リストア コマンドの例を次に示します。
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'" "MSSQL$FINANCE:testdb"
上記のコマンド
で、オプションはNetWorkerサーバー名を指定することです。
ソース クライアントを指定するには-cオプションを使用します(ソース クライアント以外のホストでリカバリが実行されている場合)。
-dはリストア先のDBを指定します。このDBは存在しません。リストア プロセスにより、ターゲット インスタンスにDBが作成されます。
-Cは、これがコピー リストアであることを指定します。Cの後のパラメーターは、データベース内のファイルの論理名を指定します。 これらの名前は、リストアするデータベースの論理名と正確に一致している必要があることに注意してください。 データベースが存在する場合は、SSMS GUIからDB名のプロパティを実行し、[Files]の下を確認します。
クラスタ化されたSQL Serverに対してリストアを実行する場合は、リストア コマンドに「-A "virtual-Server name"」を追加します。
コマンドの最後のコンポーネントは、リストアするDBの名前です。例:MSSQL$
FINANCE:testdb
データベース ファイルの論理名がわからない場合は、次のように不完全なコマンドを指定できます。
nsrsqlrc -s nsr-server -c sql12srv1 -t "5/25/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\recover\testdb.mdf'" "MSSQL$FINANCE: testdb"
43708: (pid 2144):開始時間: Wed May 25 15:37:42 2016
43621:(pid 2144):コンピューター名: SQL12SRV1 ユーザー名: administrator
NSR_CLIENT: sql12srv1.jets.local;
NSR_SERVER:nsr-server;
37725:(pid 2144):データベース「testdb」を「testdb-recovered」にリカバリしています...
142468: (pid 2144):[2292] nsr/db_apps/bsmsql/rcstripes. c(222): セーブセットMSSQL$FINANCE:/testdbのバックアップを検索しています。
37945:(pid 2144):論理ファイルtestdbの再配置がありません。
37945:(pid 2144):論理ファイル testdb_logの再配置がありません。
37945:(pid 2144):論理ファイルtestdb_log1の再配置がありません。
37946:(pid 2144):元のデータベース
にmydbという名前の論理ファイルがありません 29401:(pid 2144):D atabaseファイル再配置リストエラー。実際のファイルリストは次のとおりです:
37947:(pid 2144): testdb = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\
testdb.mdf 37947: (pid 2144): testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\testdb_log.ldf
37947: (pid 2144): testdb_log1 = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\testdb_log1.ldf
142468: (pid 2144): [2292] nsr/db_apps/bsmsql/rcstripes. c (222): セーブセットMSSQL$FINANCE:/testdbのバックアップを検索しています。
37945:(pid 2144):論理ファイルtestdbの再配置がありません。
37945:(pid 2144):論理ファイル testdb_logの再配置がありません。
37945:(pid 2144):論理ファイルtestdb_log1の再配置がありません。
37946:(pid 2144):元のデータベース
にmydbという名前の論理ファイルがありません 29401:(pid 2144):D atabaseファイル再配置リストエラー。実際のファイルリストは次のとおりです:
37947:(pid 2144): testdb = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\
testdb.mdf 37947: (pid 2144): testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\testdb_log.ldf
37947: (pid 2144): testdb_log1 = C:\Program Files\Microsoft SQL Server\MSSQL11FINANCE\MSSQL\DATA\testdb_log1.ldf
リストア操作がエラーで終了しました。詳細については、モジュール バックアップ ログ ファイルを参照してください。不明な XBSA エラー 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp (442): cleanUp()に入ります。nsr/db_apps/bsmsql/rcovmain.cpp (500): cleanUp() を終了します。
43709: (pid 2144):停止時間: Wed May 25 15:37:49 2016
***********************
上記のコマンドでは、ランダムな論理名「mydb」を付けましたが、このコマンドはDBファイルの実際の論理名と元の場所を吐き出します。この情報を使用して、リストア コマンドを作成できます。データを復元するには、別のパスを指定する必要があることに注意してください。既存のデータが上書きされるリスクを回避するために、リストア コマンドで元のソース パスを指定することはできません。
リストアのバックアップ時間は、mminfoコマンドから取得できます。出力に示されている保存時刻を使用するか、nsavetimeについてレポートしてこの時刻を代わりに使用できます。
例:
mminfo -avot-s nsr-server -q "client=sql12srv1,savetime >= yesterday"
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12SRV1
5/25/2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb
mminfo -avot -s nsr-server -q "client = sql12srv1、savetime >= yesterday" -r volume、client、sumflags、sumsize、level、savetime(25)、nsavetime、name
SQLbackups.001 sql12srv1 cb 119 MB full 5/25/2016 1:26:41 PM 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 5/25/2016 1:29:16 PM 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 5/25/2016 1:34:14 PM 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 5/25/2016 1:40:31 PM 1464198031 MSSQL$FINANCE:testdb
メタデータ セーブセットまたは実際のデータ セーブセットのいずれかのnsavetime/savetimeを指定できます。これらはどちらも機能します。
シナリオ2:
バックアップがDB名なしでメディア データベースに登録されている場合、必要なバックアップの時間が明確ではありません。たとえば、すべてのDBバックアップには、次のように同じセーブセット名があります。
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
上記から、どのセーブセットに必要なバックアップがあるかがわかりません。
medataデータ セーブセットが存在する場合、バックアップはGUIから参照可能になり、GUIからDB名とバックアップ時間を見つけることができます。DB24が必要な場合、GUIにはバックアップ時間が「5/25/2016 4:49 PM」と表示されます。
メタデータ セーブセットが存在しない場合は、nsrinfoコマンドを実行して、リストアの保存時刻を検索する必要があります。e..(イー) g mminfoにセーブセットが次のように
表示される場合:SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:47:34 PM 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:49:42 PM 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:51:50 PM 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:53:58 PM 151 KB 2588283103 cb incr MSSQL$FINANCE:
次のように保存時刻でnsrinfoを実行して、セーブセットの一部であるDBに関する情報を取得します。
nsrinfo-n mssql-t "5/25/2016 4:43:15 PM" 1464208995 mssql
名前空間 MSSQL$FINANCE:/DB21
MSSQL $ FINANCE:/DB21%/files.1464208995.1464209044
2つのオブジェクトが見つかりました
nsrinfo-n mssql-t "5/25/2016 4:49:42 PM" sql12SRV 1464209382 1
mssql 名前空間
MSSQL$FINANCE:/DB24 MSSQL$FINANCE:/DB24
%/files.1464209382.1464209437
2 個のオブジェクトが見つかりました
セーブ セットにはDB名が表示されないため、メタデータ セーブ セットが存在しないシナリオでは、前述を少し試行錯誤する必要があります。おおよそのDBサイズを手がかりとして使用して、nsrinfoクエリーをいくつかのセーブセットに絞り込みます。
Article Properties
Article Number: 000022417
Article Type: How To
Last Modified: 09 Aug 2022
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.