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 が最も実用的な対処法である。
同じデータベースの他の項目
- 3702Cannot drop database because it is currently in use(データベースは使用中のため削除できない)
- 15138The database principal owns a schema in the database, and cannot be dropped(データベースプリンシパルがスキーマを所有しているため削除できない)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings(次の SET オプションの設定が誤っているため INSERT/UPDATE が失敗)
- 4864Bulk load data conversion error (type mismatch or invalid character)(一括読込みのデータ変換エラー (型の不一致または無効な文字))
- 916The server principal is not able to access the database under the current security context(サーバープリンシパルは現在のセキュリティコンテキストでデータベースにアクセスできない)