5061: ALTER DATABASE failed because a lock could not be placed on database(データベースにロックを設定できないため ALTER DATABASE が失敗)
SQL Server意味
他のアクティブな接続/セッションがデータベースを使用しているため、ALTER DATABASE 操作 (例: シングルユーザーモードへの切り替え、ファイルの変更、オプションの設定) がデータベースに必要なロックを取得できなかった。
原因
データベースの使用中に操作が試行された。アクティブなユーザー接続のため、SET SINGLE_USER、RESTRICTED_USER などのオプション変更に必要な排他ロックを取得できなかった。アプリケーション接続が開いたまま頻繁にデプロイ/メンテナンスを行う場合によく発生する。
対処方法
データベースに接続している他のセッションを特定し (sys.dm_exec_sessions、sp_who2)、安全に終了する。メンテナンスでは、ROLLBACK オプションで開いているトランザクションをロールバックしながらモードを変更する: ALTER DATABASE [db] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; アプリケーションのトラフィックが少ないとき、またはメンテナンス時間帯に操作を行う。終了後は MULTI_USER に戻すことを忘れない。
同じデータベースの他の項目
- 40501The service is currently busy. Retry the request after 10 seconds(サービスは現在ビジー。10 秒後に要求を再試行)
- 8645A time out occurred while waiting for memory resources to execute the query(クエリ実行用のメモリリソース待機中にタイムアウト発生)
- 8651Could not perform the operation because the requested memory grant was not available(要求されたメモリ許可が利用できないため操作を実行できない)
- 3702Cannot drop database because it is currently in use(データベースは使用中のため削除できない)
- 15138The database principal owns a schema in the database, and cannot be dropped(データベースプリンシパルがスキーマを所有しているため削除できない)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings(次の SET オプションの設定が誤っているため INSERT/UPDATE が失敗)
- 468Cannot resolve the collation conflict(照合順序の競合を解決できない)