468: Cannot resolve the collation conflict
SQL ServerNe demek?
Bir işlemde (JOIN, UNION, WHERE karşılaştırması ya da eşitlik) farklı collation'lara sahip iki metin ifadesi bir araya geldi ve SQL Server hangi collation'ın uygulanacağını çözemedi. İşlem belirsizlik nedeniyle iptal edildi.
Neden olur?
Karşılaştırılan sütunlar farklı collation'larla tanımlı; çoğunlukla veritabanı collation'ı ile sunucu/tempdb collation'ı farklı olduğunda ya da farklı collation'lara sahip veritabanlarındaki tablolar birleştirildiğinde görülür. Geçici tablolar (tempdb collation'ı) ile kalıcı tabloların birleştirilmesi klasik bir tetikleyicidir.
Nasıl çözülür?
Karşılaştırmada açık collation belirtin: ... WHERE a.col = b.col COLLATE DATABASE_DEFAULT (ya da somut bir collation adı). Geçici tablo sütunlarını oluştururken COLLATE DATABASE_DEFAULT kullanın. Kalıcı çözüm için ilgili sütunları/veritabanlarını tek bir tutarlı collation'a hizalayın. tempdb ile uyumsuzluk sık ise DATABASE_DEFAULT en pratik çözümdür.
Aynı motorda diğer kayıtlar
- 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
- 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