web-dev-qa-db-ja.com

高可用性でのSQL Server 2012データベースの復元

常時稼働の高可用性モードのデータベースが、別のインスタンスの別のデータベースと同期しています。 .bakを使用してT-SQLファイルからプライマリデータベースに復元するにはどうすればよいですか?

私は高可用性に不慣れで、データベースを復元してから高可用性に戻す前に、データベースを高可用性から外す必要があるとのことですが、確信が持てません。

AlwaysOnがまだ有効になっていて、セカンダリと自動同期するときに、プライマリに直接復元できることを願っています。

13
Stew

あなたの顧問に聞いてください。バックアップを復元すると、基本的にデータベーススキーマとデータが置き換えられます。同期をオフにし、DBをHAから削除して、プライマリとレプリカで復元を実行し、WITH NORECOVERYを使用してレプリカバージョンを復元状態のままにする必要があります。バックアップが整ったら、DBをHAに戻し、同期を再度開始します。

HAはミラーリングと非常によく似ており、同様の技術を使用していますが、それほど気の利いたものではありません。 HA DBも同様に扱う必要があります。

コードは次のようになります。

-プライマリ上

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

-プライマリ上

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

-セカンダリ上

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY;

-プライマリ上

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

-セカンダリ上

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;
15