DBAtlas · Veritabanı operasyon atlası

468: Cannot resolve the collation conflict

SQL Server

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar