web-dev-qa-db-ja.com

データベースミラーリング用にSQLServerを正常に構成すると、データベースミラーリング用に構成されていないというエラーが発生しました

テスト環境の古いデータベースを、運用データベースの新しいコピーに置き換える必要があります。

テスト環境は、実際には、ミラーリング構成の2つの異なるサーバー上のテストデータベースの2つのインスタンスで構成されます(本番環境にはミラーリングがあり、クライアントはテスト環境を本番環境と同じようにする必要があるため、ミラーリングが行われます)。

これは簡単なことだと思いました:

  • 本番DBのバックアップ(.bakファイル)を取得する
  • テストDBのミラーリングを一時的に無効にする
  • (製品)バックアップから上書き(つまり、復元)
  • ミラーリングを再度アクティブにします

しかし、明らかにこれはジャンプするのに十分なフープではありません。 1日それと格闘した後(アクセス許可の問題、不可解なエラー、SSMSを(真剣に)再起動すると消える問題、私は完全なリストを惜しみません...)ついに、新しいDBを原則と復元の両方に復元しましたテストDBのインスタンスをミラーリングします。

ただし、SQL Serverがミラーリング構成設定を放棄したため、原則を右クリックしてミラーリングを選択し、セキュリティウィザードを実行しました。セキュリティウィザードの最後にある[完了]をクリックすると、それが実行され、すべてが正常にセットアップされたことを報告する画面が表示されました([エンドポイントの構成]-[成功])。その直後に、ミラーリングを開始するかどうかを尋ねる別のウィンドウが表示されますが、そのウィンドウで[開始]をクリックすると、次のSQLServerエラーが発生します。

ミラーリングの開始中にエラーが発生しました。

データベース "3DSS_TEST"はデータベースミラーリング用に構成されていません。(MicrosoftSQL Server、エラー:1416)

そのため、「ミラーリングが正常に構成されました!」というメッセージが表示されます。次に、同じプロセスの一部として、「ミラーリングを構成しなかったため、ミラーリングを開始できません!」 :(

何か案は?以前にこれを見た人、またはより有用なエラーメッセージやその他の情報をいじめる方法を知っている人はいますか?

更新:解決済み
ブライアンが以下に言うように、私は間違った回復オプションでミラーデータベースを復元しました。正しい方法は次のとおりです。

RESTORE DATABASE [MyDb]
FROM disk = 'C:\TEmp\MyDb_LIVE_Prod_backup_2010-06-18_for_test_server.bak'
WITH
REPLACE,
NOrecovery /* This should be 'norecovery', my problem was I used 'recovery' */

ありがとう!

4
MGOwen

エラー1416は、ミラーデータベースが復旧したときによく発生します。ミラーリングされたデータベースが復元状態にあることを確認します(NORECOVERYオプション)

ミラーサーバーで以下のクエリを実行し、データベースの状態を確認します。

select database_id, user_access_desc, state_desc, recovery_model_desc, is_broker_enabled, log_reuse_wait_desc from sys.databases where name = 'database'

ミラーデータベースがONLINE状態の場合、ミラーリングパートナーを設定する前に、データベースとその後のT-LogバックアップをNORECOVERYオプションを使用して再度復元する必要があります。

4
Brian Knight