- Home
- SQL Server
- [SQL Server]メッセージ 468、レベル 16、状態 9、照合順序の競合を解決できません。
[SQL Server]メッセージ 468、レベル 16、状態 9、照合順序の競合を解決できません。
- 2017/6/7
- SQL Server
- apanese_CI_AS, COLLATE, Japanese_BIN2, 照合順序の競合を解決できません。
- コメントを書く
テーブル結合時などの照合順序の相違によるエラー
エラーメッセージ
メッセージ 468、レベル 16、状態 9、行 159
equal to 操作の “Japanese_CI_AS” と “Japanese_BIN2” 間での
照合順序の競合を解決できません。
コードの例(例えば)
1 2 3 4 5 6 7 |
SELECT * FROM 売上テーブル A LEFT OUTER JOIN 商品マスタ B ON A.商品コード = B.商品コード |
原因
「売上テーブル」と「商品マスタ」の照合順序が違うため、商品コードを比較できない。
例えば、片方がSQL Serverのテーブルで、結合する側がOracleのテーブルをリンクサーバー経由、または他のSQL Serverのデータベースで、それぞれの照合順序が合っていない場合に起こる。
解決法
「COLLATE」を使用して、二つのテーブルの照合順序をどちらか一方に合わせる。
1 2 3 4 5 6 7 |
SELECT * FROM 売上テーブル A LEFT OUTER JOIN 商品マスタ B ON A.商品コード = B.商品コード COLLATE Japanese_BIN2 |
結合条件のあとの「COLLATE Japanese_BIN2」は今回の例でいえば「COLLATE Japanese_CI_AS」でも可。
エラーメッセージに書かれている照合順序のどちらかに合わせれば良い。
このようなコードをつけ足して対応するのは、本来良くないが、大規模なシステムで、このようなデータベースの作りになっているのなら、あきらめるしかない。
他にも、データベースに変更があってその変更済みのデータベースをもらうたびにそのテーブルだけ照合順序が違い。どちらかに合わせてくれと再三お願いしても逆切れされてあきらめてテーブルを作り直す場合もある。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。