2016-05-06 6 views
1

「等しい」操作で「Latin1_General_CI_AS」と「SQL_Latin1_General_CP1_CI_AS」の照合の競合を解決できません。エラー。ストアドプロシージャの照合問題

エラーはどちらも、私はどこにでも照合を指定しないよ、SPにされていないテーブルを作成し、私は

select t.name, c.*, c.collation_name 
from sys.columns c 
left join sys.tables t 
on c.object_id = t.object_id 
order by c.collation_name 

を使用する場合それは「Latin1_General_CI_AS」フィールドがあると言うには、すべてのフィールドがあります既定の照合を使用します。私はデータセットを返していますが、エラーがどこにあるかはわかりません。結合はありません。一時テーブルにデータを設定していますが、照合順序を指定していませんが、エラーが発生しています。助言がありますか。 SQL Serverの使用2014.

+0

多分トリガーですか? –

+0

良い提案ですが、データベースにトリガーがありません。 – MiscellaneousUser

+2

* "照合順序を指定しないで一時テーブルを作成しています*" - 一時テーブルを作成すると、tempdbの照合が使用されますが、これは使用しているデータベースの照合と一致しない可能性があります。これは紛争の原因となる可能性があります。 'SELECT collat​​ion_name FROM sys.databases WHERE name IN( 'tempdb'、 'YourDatabase')'を実行し、2つの異なる照合があるかどうか確認してみてください – GarethD

答えて

1

テンポラリテーブルでは、contained databaseのコンテキストで使用されている場合を除き、デフォルトでtempdbという照合順序が使用されます。

COLLATE DATABASE_DEFAULTを指定すると、現在のデータベースの照合を使用することができます。

CREATE TABLE #T 
(
SomeColumn VARCHAR(50) COLLATE DATABASE_DEFAULT 
) 
+0

最後にどうやってやったのですか? – MiscellaneousUser

関連する問題