2011-01-25 5 views
4

SQL Server 2008データベースがLatin1_General_100_CI_AI照合に設定されていますが、Management Studioを使用してデータベースにクエリを実行すると、私は何が欠けていますか?SQL ServerデータベースがLatin1_General_100_CI_AIに設定されている場合の大文字と小文字の問題

また、nvarcharで2つのテーブルを結合すると、次のメッセージが表示されます。テーブルはどちらも同じ照合順序にあります。

等しい操作で、 "Latin1_General_100_CI_AI"と "Latin1_General_CI_AS"の照合の競合を解決できません。

ご協力いただければ幸いです。

+1

テーブルのDDLをスクリプト化できますか?列が同じ照合順序にないことは明らかです。データベースの照合順序を変更しても、既存の列の照合には影響しません。 –

+0

クエリとテーブルの定義を投稿してください。 – Quassnoi

+0

テンポラリテーブル(#TableName)に対してクエリが実行されていますか?テンポラリテーブルは、tempdbの照合順序から照合順序を取得します。 –

答えて

2

は、他のフィールドの照合にフィールドのいずれかをキャストしてみてください。

SELECT * 
FROM as_table 
JOIN ai_table 
ON  ai_field = as_field COLLATE Latin1_General_100_CI_AI 

または

SELECT * 
FROM ai_table 
JOIN as_table 
ON  as_field = ai_field COLLATE Latin1_General_100_CI_AS 

注フィールドをキャストすると、このフィールドにインデックスに対する述語がunsargableせていること。

1

すでにデータベース内にオブジェクトを作成している場合は、単に照合順序を変更しても既存のオブジェクトは変更されません。これを見るには、テーブルを右クリックしてスクリプティングしてみると、varcharフィールドの照合について多くの注意があります。オブジェクトを変更する場合は、オブジェクトを再作成する必要があります。