web-dev-qa-db-ja.com

SQL Serverのミラーリングされたデータベースがリカバリモードでスタックしている

すでに数日間、回復モードでスタックしているデータベースがあります。これについては複数のスレッドがありますが、そこにある解決策は私にはうまくいきません。

これが私がすでに試したことです:

RESTORE DATABASE [DBNAME] WITH RECOVERY 
Error: Exclusive access could not be obtained because the database is in use.

ALTER DATABASE [DBNAME] SET OFFLINE WITH ROLLBACK IMMEDIATE
Error: ALTER DATABASE failed because a lock could not be placed on database 'DBNAME'  
I get the same error when trying to set the db to SINGLE_USER

exec sp_who2 --> nothing that contains my database, so nothing that I can kill  
(Or I need to look for something else ??)

SQLサービスには停止できないデータベースが多すぎるため、SQLサービスを停止することはできません。

データベースを回復モードから抜け出すために何ができるか誰が知っていますか?プライマリとミラーの両方の場所で、データベースの状態は「リカバリ中」です。

コマンドsp_who2を使用してDB STARTUPにプロセスを見つけました。

sys.dm_tran_locksでは、このセッションにリカバリ中のデータベースのresource_database_idがあるため、これによりデータベースがロックされたままになります。 SQL Serverを停止せずにこれを修正する方法を知っている人はいますか?

4
Erik Dekker

Dbミラーリングのエンドポイントを再起動します。

--To stop 
ALTER ENDPOINT<Endpoint Name> STATE=STOPPED

--To start
ALTER ENDPOINT<Endpoint Name> STATE=STARTED

TECH note:エラーのあるデータベースだけでなく、複数のデータベースがある場合、エンドポイントの停止と開始はallそのエンドポイント上のデータベースに影響します。これにより、SharePointなどの運用システムで問題が発生する可能性があります。修正するには、ミラー化された他のデータベースサーバーに移動して、同じコマンドを入力します。ALTERENDPOINT STATE = STOPPED ALTER ENDPOINT STATE = STARTED

エンドポイントの名前を見つける方法は? select * from sys.endpoints <-SQL 2012で機能します名前はミラーリングのために "type = 4"になります。

5
selva

私はこれをして待った。

ALTER DATABASE <datbasename>  SET PARTNER OFF;

それは実際に機能し、実行できました:

RESTORE DATABASE  <datbasename>  WITH RECOVERY;
1
garrett

今日、私は同じ問題に直面しています。 SQL Server 2012でミラーリングを構成しているときに、ミラーデータベースのステータスが回復モードになっているのを確認しました。私がしたことは

alter database database_name set partner off

これで、ミラーデータベースのステータスが復元モードになりました。

0
user139278

バックアップから復元してもよろしいですか?

セッションでKILLを使用することもできますが、データベースの整合性が損なわれる可能性があります。

0
Nabil Becker

以下は私のために主サーバーで働いた。

ALTER DATABASE <datbasename>  SET PARTNER OFF;
RESTORE DATABASE  <datbasename>  WITH RECOVERY;

ミラーリングされたボックスでデータベースを「回復中」の状態から回復できません。試行:データベースを削除して緊急モードにするシングルユーザーモードにするオフラインにする

何もうまくいかず、次のエラーが発生しました:

「ユーザープロセスのみを強制終了できます。何とか何とか」「データベースは使用中です」

ミラーリングされたインスタンスでSQL Serverサービスと「ミラーリングエンドポイント」を停止して開始しましたが、問題は解決していません。データベースを「リカバリ中」の状態のままにしています。

ソリューション: SQL Serverサービスを停止し、データベースのログ(.ldf)ファイルを削除しました。 SQL Serverサービスを開始し、意外にも機能しました。データベースはオンラインでした。データベースを削除して、ミラーリングを再構成しました。

0
Muhammad

フェイルオーバーして、停止をスケジュールするか、それを待つ必要があるその時点であるかもしれません。

理想的なソリューションではありませんが、それは起こります:/

0
Nabil Becker

データベースが復元モードになっている場合は、SQL Server 2014でmasterデータベースから次のステートメントを実行してください。

restore database <dbname> with recovery

enter image description here

0
user83554