SQL Server’i Türkçeleştirmek Hakkında
Şayet sıfırdan bir veritabanı tasarlıyorsanız daha sonra başağrıları çekmemek için, SQL Server’i Türkçeleştirmek konusunda belli başlı ayarları ele alan 'http://www.verivizyon.com/detail.asp?cid=324 adresindeki makaleye gözatabilirsiniz.
SQL Server Üstünde Skaler Fonksiyonlar Yazmak
En basit SQL Server Skaler fonksiyonu şu şekilde bir şey olacaktır:
CREATE FUNCTION fonksiyon(@isim VARCHAR(20))
RETURNS VARCHAR(30)
AS
BEGIN
return ‘Merhaba’ + isim
END
SQL Server’da Unicode Karakter Kullanmak
SQL Server herhangi bir string literali(elle verilen değeri) ASCII olarak algılar. Unicode olarak algılaması için ifadenin başına N’ unicode string’şeklinde belirtmek gerekir.
Bozuk Karakterlerin Türkçe Karşılıklarını Bulmak
Bütün bunlardan sonra bu işi yapan bir fonksiyon şu şekilde olabilir:
CREATE FUNCTION Turkceye (
@girdi NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @sonuc NVARCHAR(MAX)
SET @sonuc = @girdi
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'ğ');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş');
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş');
RETURN @sonuc COLLATE Turkish_CI_AS ;
END
COLLATE fonksiyonunun kullanımı hakkında ayrıntılı bilgi MSDN’den edinebilirsiniz.
Bu türden bir fonksiyonun veritabanınızda işe yarayıp yaramadığını şu şekilde test edebilirsiniz:
SELECT dbo.Turkceye(tblMakale.makaleBaslik)
FROM tblMakale
Şayet fonksiyon tam olarak işe yarıyorsa, veritabanınızdaki her bir bozuk sütun için şu şekilde güncelleme yapabilirsiniz:
UPDATE tblMakale
SET tblMakale.makaleBaslik=dbo.Turkceye(tblMakale.makaleBaslik)

DİKKAT:
Veritabanlarında güncelleme yaparken dikkatli olmanız gerekir. Kalıcı veri kayıplarına neden olabilir.
Sonuç
Bu türden bir fonksiyonla verilerinizi UPDATE etmek suretiyle karakter sorunlarından kurtulabilirsiniz. Bu türden bir fonksiyon SQL Server 2000,2005 ve 2008 sürümlerinde çalıştırılabilir. 7.0 ve eski sürümler, fonksiyon için bir destek sağlamamaktadır.
Bir veritabanındaki belli veri türünden bütün sütunlarda fonksiyonu otomatik çalıştırmak için sysobject sistem view’i üstünde bir Cursor çalıştırabilirsiniz. Bu, ileri seviyede veritabanı programlama bilgisi gerektirir.

[
26.08.2008]