26 Kasım 2007 Pazartesi

"SQL Server' ı kurarken hangi 'Collation' ayarını kullanmalıyız?"

Merhaba arkadaşlar,


Habergruplarından bir arkadaşın sorduğu bu soru üzerine bir yazı yazmak iyi olur diye düşündüm. Bazen aklımızı çok karıştırıyor bu soru. "SQL Server' ı kurarken hangi Collation ayarını kullanacağız? 'Windows Collation' mı yoksa 'SQL Collation' mı?

Peki, konuya vakıf olmayan arkadaşlar daha da önce şunu soracak: "Collation" da neymiş? =)

Tamam, geliyor işte: Sözlük anlamı "Sıraya dizme, karşılaştırma" olan "Collation" SQL Server' da da tam olarak bu mânâlarda kullanılıyor. Bir tür dil ayarı...

SQL Server Setup' da karşılaşacağınız Collation Ayarları penceresini aşağıdaki resimde de görebilirsiniz.





Seçeceğiniz "Collation" ayarı, SQL Server Instance' ınızda yapacağınız veri karşılaştırmaları ve verileri sıralama gibi işlemleri doğrudan etkileyecektir.

SQL Collation' ları, SQL Server' da artık sadece geriye dönük destek için bulunmaktadır. Eğer aşağıdaki durumlar sizin için de geçerliyse, SQL Collation kullanmak durumundasınız demektir:

- Ortamınızda birbiri ile iletişim içerisinde olan SQL Server 6.5, 7.0 ve 8.0 versiyonları varsa. (Bu iletişim ve etkileşim Replication yoluyla olabilir meselâ)

- Eğer bir uygulamanız var ve bu uygulamanız da SQL Server 8.0 ve bundan daha eski SQL Collation' larına bağımlı olarak çalışıyorsa.

Normal şartlarda, sıfırdan bir SQL Server kuracağınız zaman kesinlikle Windows Collation' larını kullanmanızı tavsiye ederim.

Bununla birlikte, SQL Collation' ın bir takım uyumsuzlukları da vardır. Meselâ:

- Database Engine ile birlikte Analysis Services' i de kuruyorsanız ve Collation olarak bir SQL Collation' ı seçmişseniz şayet, Analysis Services için SQL Collation kullanılamayacaktır. SSAS için sadece Windows Collation' ları kullanılabilir. SQL Server Setup, SSAS için, seçtiğiniz SQL Collation' ına en yakın Windows Collation' ını otomatik olarak seçecektir. Tabii bu da Database Engine ve Analysis Services arasındaki veri alış-verişlerinde uyumsuzluk sorunlarına neden olabilir.

- Eğer SQL Collation kullanıyorsanız, Unicode ve Non-Unicode (örnek olarak veritipi nchar \ char) olan iki alana ait verinin karşılaştırılmasında sorun yaşayabilirsiniz. Eğer iki veritipi de Unicode ise veya iki veritipi de Non-Unicode ise sorun olmayacaktır.


Ekrem Önsoy

Hiç yorum yok: