Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  MSSQL'den alınabilecek bir hata mesajı.
Bana sabahtan saç baş yoldurtuyor.

Bir tablodaki bir string alan, where koşulunda In parametresi ile bir başka tablodaki string alanla karşılaştırıldığında bu tür bir hata alınabilir!
Sebep: ilgili string alanların ve belkide veritabanın Collate bilgilerinin farklı olmasıdır.
mesela bende bir string alan Turkish_CI_AS iken, diğer alan SQL_Latin1_General_CP1_CI_AS bu idi...
Bu sorunu ki collate bilgisini de aynı yaparak çözebilirsiniz.

ALTER TABLE tableName ALTER COLUMN columnName
            dataType COLLATE Turkish_CI_AS


Bir veritabında yeni açılan bir tablodaki string alanlar neden farklı collate bilgisine sahip olurlar?
El cevap, Restore ettiğiniz veritabanının collate bilgisi ile sizin mssql'i ninizinkinin farklı olmasıdır...
haydar
17 Mart 2007 13:44
2.  Karşılaştırdığınız iki string alanın dil seçeneği farklı ise alabileceğiniz hata mesajı. Gidermek için tablo alter edilebilir veya sorgu içinde geçici olarak dönüşüm sağlanabilir.

diyelim ki iki tablomuz var, SALES_HISTORY ve CUSTOMER. bu iki tabloda da string tipinde CUSTOMER_CODE alanı var. fakat bu tabloların collation değerleri birbirinden farklı. bu durumda aşağıdaki sorgu "Cannot resolve collation conflict for equal to operation" hatasını verecektir.
SELECT SALES_HISTORY.SALES_TOTAL FROM SALES_HISTORY, CUSTOMER
WHERE
SALES_HISTORY.CUSTOMER_CODE = CUSTOMER.CUSTOMER_CODE


eğer tabloyu alter etmek gibi bir şansınız yoksa sorgunuzu aşağıdaki gibi yazarak çalıştırabilirsiniz.

SELECT SALES_HISTORY.SALES_TOTAL FROM SALES_HISTORY, CUSTOMER
WHERE
CUSTOMER.CUSTOMER_CODE = SALES_HISTORY.CUSTOMER_CODE COLLATE TURKISH_CI_AS


COLLATE komutu alan adı yazıldıktan sonra kullanılır. CUSTOMER.CUSTOMER_CODE alanından sonra da kullanılabilirdi. kendisinden önce gelen alanı (yani örneğimizdeki SALES_HISTORY.CUSTOMER_CODE alanını) belirtilen dile çevirir ve karşılaştırmayı mümkün kılar.
bateristt
17 Mart 2007 20:01
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?
» COLLATE


Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen