DBAtlas · データベース運用アトラス

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 に戻すことを忘れない。

DBAtlas で開く →

同じデータベースの他の項目