照合順序の変更で、5030、5072 エラーが発生する場合

  • デル株式会社
  • 前回、LocalDBの照合順序を変更する(データベース レベル)で、
    照合順序の変更方法を記載しました。
    照合順序の変更時にこんなエラーが出る場合は、ちょっと対処が必要です。

    メッセージ 5030、レベル 16、状態 5、行 1
    The database could not be exclusively locked to perform the operation.
    メッセージ 5072、レベル 16、状態 1、行 1
    ALTER DATABASE failed. The default collation of database ‘E:TEST_DB.mdf’ cannot be set to Japanese_XJIS_100_CI_AI_WS.

    エラーが出た場合の対処方法

    照合順序の変更を行うとき、5030や5072のエラーが出ることがあります。
    これは、照合順序の変更処理が、データベースに対して排他処理を行うため、
    照合順序変更処理時に、他プロセスが使用している場合に起きます。
    対処方法は、当該データベースへアクセスしているプロセスを切断するか、

    -- プロセスを列挙して
    select * from sys.sysprocesses
    
    -- 対象プロセスを切断
    KILL [SPID]
    

    データベースのアクセス制限をシングルユーザーモードに変更します。
    (照合順序を変更するプロセスのみにする)
    今回は、シングルユーザーモードに変更する方法(簡単なので)
    Management Studioを使用します。

    アクセス制限の変更

    1.対象のデータベースを選択後、右クリックし[プロパティ]を選択
    2.左ペインで[オプション]を選択
    3.右ペインの[状態]-[アクセス制限]を「SINGLE_USER」へ変更し[OK]ボタンを押下

    右ペインの[状態]-[アクセス制限]を「SINGLE_USER」へ変更し[OK]ボタンを押下

    4.メッセージボックスの[はい]ボタンを押下

    メッセージボックスの[はい]ボタンを押下

    ※シングルユーザモードになると、下記のアイコンがデータベース名に表示されます。

    シングルユーザアイコン

    5.照合順序変更変更処理(LocalDBの照合順序を変更する(データベース レベル)
    6.対象データベースをデタッチ(SQL Server Management Studio で MDFファイルを開く(閉じる)

    こんな感じ。
    照合順序変更後は、アクセス制限を「MULTI_USER」に変更すること。
    デタッチとアタッチで元に戻ってるけど。。

    MSのページも読むと吉。
    データベースをシングル ユーザー モードに設定する

    関連記事

    ページ上部へ戻る