すでに数日間、回復モードでスタックしているデータベースがあります。これについては複数のスレッドがありますが、そこにある解決策は私にはうまくいきません。
これが私がすでに試したことです:
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を停止せずにこれを修正する方法を知っている人はいますか?
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"になります。
私はこれをして待った。
ALTER DATABASE <datbasename> SET PARTNER OFF;
それは実際に機能し、実行できました:
RESTORE DATABASE <datbasename> WITH RECOVERY;
今日、私は同じ問題に直面しています。 SQL Server 2012でミラーリングを構成しているときに、ミラーデータベースのステータスが回復モードになっているのを確認しました。私がしたことは
alter database database_name set partner off
これで、ミラーデータベースのステータスが復元モードになりました。
バックアップから復元してもよろしいですか?
セッションでKILLを使用することもできますが、データベースの整合性が損なわれる可能性があります。
以下は私のために主サーバーで働いた。
ALTER DATABASE <datbasename> SET PARTNER OFF;
RESTORE DATABASE <datbasename> WITH RECOVERY;
ミラーリングされたボックスでデータベースを「回復中」の状態から回復できません。試行:データベースを削除して緊急モードにするシングルユーザーモードにするオフラインにする
何もうまくいかず、次のエラーが発生しました:
「ユーザープロセスのみを強制終了できます。何とか何とか」「データベースは使用中です」
ミラーリングされたインスタンスでSQL Serverサービスと「ミラーリングエンドポイント」を停止して開始しましたが、問題は解決していません。データベースを「リカバリ中」の状態のままにしています。
ソリューション: SQL Serverサービスを停止し、データベースのログ(.ldf)ファイルを削除しました。 SQL Serverサービスを開始し、意外にも機能しました。データベースはオンラインでした。データベースを削除して、ミラーリングを再構成しました。
フェイルオーバーして、停止をスケジュールするか、それを待つ必要があるその時点であるかもしれません。
理想的なソリューションではありませんが、それは起こります:/