Cannot resolve the collation conflict between “Turkish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation

Merhaba Arkadaşlar,

Farklı collation lı birden çok veritabanı ile çalışırken bu can sıkıcı hatayla karşılaşıyoruz maalesef.

Özellikle joinleme işlemi yaparken aldığımız bu hata ; üzerinde çalıştığımız veritabanındaki tablonun collation ile başka bir veritabanından çağırdığımız tablonun collationlarının uyuşmamasıdır.

Çözüm olarak iki yöntemimiz var...

1-) COLLATE DATABASE DEFAULT komutu ile joinlenen veriler arasında collation ı üzerinde çalışılan veritabanın Collation a çevirmek..

Örnek SQL :

SELECT T1.EmployeeName, T2.DeptName
FROM ServerA.dbo.EmpTab T1
JOIN ServerB.dbo.DeptTab T2
ON T1.DeptCode COLLATE DATABASE_DEFAULT
= T2.DeptCode COLLATE DATABASE_DEFAULT

 Bu yöntem az joinli sqllerde etkili ve okunabirliliği bozmuyor.

2-)Way efendim benim bir sürü joinim var sql imin okunurluğu bozulmasın diyorsanız dışardan çağrılan veritabanındaki tabloyu select .. into #temp e basarak oluşturduğumuz temp tablonun collationını değiştirdikten sonra onunla çalışmak.

Herkese Kolay Gelsin.

Kaynak : http://sqlwithmanoj.com/tag/collate-database_default/

Yorumlar

Bu blogdaki popüler yayınlar

IONIC BAŞLANGIÇ

Golang working with interfaces and functions -3