- 2017-3-21
- SQLServer
前回、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]ボタンを押下
4.メッセージボックスの[はい]ボタンを押下
※シングルユーザモードになると、下記のアイコンがデータベース名に表示されます。
5.照合順序変更変更処理(LocalDBの照合順序を変更する(データベース レベル))
6.対象データベースをデタッチ(SQL Server Management Studio で MDFファイルを開く(閉じる))
こんな感じ。
照合順序変更後は、アクセス制限を「MULTI_USER」に変更すること。
デタッチとアタッチで元に戻ってるけど。。
MSのページも読むと吉。
データベースをシングル ユーザー モードに設定する