SORU
22 EKİM 2009, PERŞEMBE


Arasında harmanlama çakışma "Sql_latin1_general_cp1_cı_as" ve "Latin1_general_cı_as" operasyonu eşit

Aşağıdaki kodu var

SELECT tA.FieldName As [Field Name],
COALESCE(tO_A.[desc], tO_B.[desc], tO_C.Name, tA.OldVAlue) AS [Old Value],
COALESCE(tN_A.[desc], tN_B.[desc], tN_C.Name, tA.NewValue) AS [New Value],
U.UserName AS [User Name],
CONVERT(varchar, tA.ChangeDate) AS [Change Date] 
FROM D tA
JOIN [DRTS].[dbo].[User] U ON tA.UserID = U.UserID
LEFT JOIN A tO_A on tA.FieldName = 'AID' AND tA.oldValue = CONVERT(VARCHAR, tO_A.ID)
LEFT JOIN A tN_A on tA.FieldName = 'AID' AND tA.newValue = CONVERT(VARCHAR, tN_A.ID)
LEFT JOIN B tO_B on tA.FieldName = 'BID' AND tA.oldValue = CONVERT(VARCHAR, tO_B.ID)
LEFT JOIN B tN_B on tA.FieldName = 'BID' AND tA.newValue = CONVERT(VARCHAR, tN_B.ID)
LEFT JOIN C tO_C on tA.FieldName = 'CID' AND tA.oldValue = tO_C.Name
LEFT JOIN C tN_C on tA.FieldName = 'CID' AND tA.newValue = tN_C.Name
WHERE U.Fullname = @SearchTerm
ORDER BY tA.ChangeDate

Ne zaman çalışan kod ben alıyorum hata yapıştırılan başlık ekledikten sonra iki birleşimler için tablo C. bence bu olabilir yok aslında kullanıyorum sql 2008 ve restore edilmiş bir kopyası bu db için benim makine 2005. Yardım lütfen!

CEVAP
22 EKİM 2009, PERŞEMBE


Tabloda iki farklı alfabe bir uyumsuzluk var. Alfabe tablonuzdaki her sütun(ler) bu sorgu kullanarak kontrol edebilirsiniz:

SELECT
    col.name, col.collation_name
FROM 
    sys.columns col
WHERE
    object_id = OBJECT_ID('YourTableName')

Alfabe ve dizeleri sıralama karşılaştırırken gerektiğinde kullanılır. Genellikle tek ve benzersiz bir harmanlama veritabanı boyunca kullanılmış olması iyi bir fikirdir - tek bir tablo veya bir veritabanı içinde farklı alfabe kullanmayın - sadece sorun için soruyorsun....

Tek bir harmanlama için yerleşmiş bir kere, henüz bu komutu kullanarak uymayan sütun / o tabloları değiştirebilirsiniz:

ALTER TABLE YourTableName
  ALTER COLUMN OffendingColumn
    VARCHAR(100) COLLATE Latin1_General_CI_AS NOT NULL

Marc

GÜNCELLEME: tam metin veritabanı, bu sorguyu burada kullanın: endeksleri bulmak için

SELECT
    fti.object_Id,
    OBJECT_NAME(fti.object_id) 'Fulltext index',
    fti.is_enabled,
    i.name 'Index name',
    OBJECT_NAME(i.object_id) 'Table name'
FROM 
    sys.fulltext_indexes fti
INNER JOIN 
    sys.indexes i ON fti.unique_index_id = i.index_id

Sonra tam metin dizini kullanarak bırakabilirsiniz:

DROP FULLTEXT INDEX ON (tablename)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006