sQL Serverデータベースに接続しようとすると、このエラーが発生します
Database 'XXX' is in transition. Try the statement later.
今日の初めに長いクエリをキャンセルしましたが、何らかの理由でデータベースを元に戻すことができません。何か私にできることはありますか?
これは、DBをオフラインにするか、他の特定の操作を実行しようとして失敗した場合に発生することがあります。操作を試行したSSMSインスタンスを閉じてから再度開くと、ロックがクリアされることがあります。サーバーに接続されているすべてのSSMSインスタンスを閉じて再度開きます。
また、長いクエリの実行中にDBをオフラインにしようとした場合にも発生する可能性があります。アクティビティモニターを確認し、必要に応じて安全であれば、長時間実行されているクエリを強制終了してみてください。
上記のいずれも機能しない場合は、すべてのSSMSインスタンスを閉じてから、SQL Server構成マネージャーを使用してSQLを再起動します。通常、これで問題は解決しますが、DBは最初は回復モードになっている可能性があります。
不思議なことに、私はSSMSを閉じて再度開くだけでこの問題を修正しました。
SSMSを閉じることも私にとってはうまくいきましたが、問題によっては、これを試すことができます:
ALTER DATABASE [Name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [Name] SET MULTI_USER
このアイデアは、この質問(および個人的な経験)に基づいています: https://stackoverflow.com/questions/4230290/sql-server-2008-how-do-i-disconnect-everyone-from-my-db
既に回答済みですが、追加するだけです。オフラインにしようとして失敗した場合は、データベースの状態を変更しようとしているSPIDを強制終了できます。
Sp_whoまたはsp_who2を実行し、データベースをオフラインにしようとしているDBで回転しているSPIDを見つけます。そのSPIDを強制終了すると、移行状態にないオンラインまたはオフラインのDBが残ります。