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

468: Cannot resolve the collation conflict(照合順序の競合を解決できない)

SQL Server

意味

操作 (JOIN、UNION、WHERE の比較または等価) で照合順序の異なる 2 つの文字列式が出会い、SQL Server はどの照合順序を適用すべきか解決できなかった。あいまいさのため操作は取り消された。

原因

比較される列が異なる照合順序で定義されている。データベースの照合順序がサーバー/tempdb の照合順序と異なる場合や、照合順序の異なるデータベースのテーブルを結合した場合に最もよく見られる。一時テーブル (tempdb の照合順序) と永続テーブルの結合は典型的なきっかけ。

対処方法

比較で照合順序を明示的に指定する: ... WHERE a.col = b.col COLLATE DATABASE_DEFAULT (または具体的な照合順序名)。一時テーブルの列を作成する際に COLLATE DATABASE_DEFAULT を使用する。恒久対策として、影響を受ける列/データベースを一貫した単一の照合順序に揃える。tempdb との不一致が頻繁な場合は、DATABASE_DEFAULT が最も実用的な対処法である。

DBAtlas で開く →

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