none
照合順序の変更について

    質問

  • いつもお世話になっております。

    初めての投稿になります。不足情報等ございましたら、ご指摘ください。

    環境>

    製品:Microsoft SQL Server Enterprise Evaluation Edition
    OS:Microsoft Windows NT 5.2 (3790)
    プラットフォーム:NT INTEL X86
    バージョン:10.0.1600.22
    言語:日本語
    サーバ照合順序:Japanese_CI_AS
    クラスタ化:False

    上記環境にて、開発中に照合順序の問題が発生し、データベースの
    「プロパティ」→「オプション」→「照合順序」をJapanese_BIN2に変更しようとしたところ、下記エラーメッセージが出力され、変更が出来ませんでした。

    ----------------------------------------------------------------
    メッセージ 5030、レベル 16、状態 2、行 1
    操作を実行するために、データベースを排他ロックできませんでした。
    メッセージ 5072、レベル 16、状態 1、行 1
    ALTER DATABASE が失敗しました。データベース 'DBNAME' の既定の照合順序を Japanese_BIN2 に設定できません。
    ----------------------------------------------------------------

    クライアント端末からアクセスしているのがまずいと思い、クライアントを切断し、サーバから直接実行しても失敗しました。

    接続が残っているのかと思い、DBサーバを再起動しても失敗しました。

    データベースを排他ロックする方法、もしくは、照合順序の変更手順で、不足している事項等はございますか?

     

     

    2011年6月22日 11:41

回答

  • 製品:Microsoft SQL Server Enterprise Evaluation Edition

    ServerとEnterpriseの間に含まれているはずの「2008 R2」「2008」「2005」等、一番肝心な情報が抜けています。バージョン10.0とのことなので「2008」だとは思いますが。

    正式な手順は調べていませんが、とりあえずSQL Serverサービスの再起動直後ならALTER DATABASEに成功しますので、私はそれで満足しています。

    # それほど変更する用もないので。 

    • 回答としてマーク MAXELA 2011年6月26日 8:13
    2011年6月22日 12:47
  • sys.sysprocesses コマンドを実行し、該当のデータベースにアクセスしているセッションがないかを確認してみてはどうでしょう。

    データベースIDは、sys.databasese から確認できます。

     

    select * from sys.sysprocesses

     

    セッションが存在している場合は、KILL SPID コマンドでセッションを強制終了することができます。

     

     

    • 回答としてマーク MAXELA 2011年6月26日 8:13
    2011年6月24日 9:10

すべての返信

  • 製品:Microsoft SQL Server Enterprise Evaluation Edition

    ServerとEnterpriseの間に含まれているはずの「2008 R2」「2008」「2005」等、一番肝心な情報が抜けています。バージョン10.0とのことなので「2008」だとは思いますが。

    正式な手順は調べていませんが、とりあえずSQL Serverサービスの再起動直後ならALTER DATABASEに成功しますので、私はそれで満足しています。

    # それほど変更する用もないので。 

    • 回答としてマーク MAXELA 2011年6月26日 8:13
    2011年6月22日 12:47
  • 返信ありがとうございます。
    申し訳ございません。SQLSERVER2008 R2でした。

    開発メンバーの手を止めることが難しいため、休日にでも確かめようと思います。

    2011年6月23日 0:23
  • sys.sysprocesses コマンドを実行し、該当のデータベースにアクセスしているセッションがないかを確認してみてはどうでしょう。

    データベースIDは、sys.databasese から確認できます。

     

    select * from sys.sysprocesses

     

    セッションが存在している場合は、KILL SPID コマンドでセッションを強制終了することができます。

     

     

    • 回答としてマーク MAXELA 2011年6月26日 8:13
    2011年6月24日 9:10
  • 返信ありがとうございます。
    お二方のご助言を参考に、無事変更することが出来ました。

    今度は照合順序を変更することで、SELECT分の項目大小比較をされてしまう問題が発生してしまいましたが、
    今回の質問とは別になるため、解決済みとさせていただきます。

    ありがとうございました。

    • 回答としてマーク MAXELA 2011年6月26日 8:13
    • 回答としてマークされていない MAXELA 2011年6月26日 8:13
    2011年6月26日 8:12