2017-02-09 43 views
-1

私は、次のコードを持っていると、次のエラーが発生します:照合順序の競合

Msg 468, Level 16, State 9, Line 37 
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS_KS_WS" in the equal to operation. 

は、私はこれを解決するために何をすべき?私がオンラインで見つけたものはすべて、結合されたテーブルと関係しています。

IF OBJECT_ID('SeanVault.dbo.TempVarIDs', 'U') IS NOT NULL 
     DROP TABLE SeanVault.dbo.TempVarIDs; 
    Select VariableID, VariableName 
    INTO SeanVault.dbo.TempVarIDs 
    from Variable 
      Where VariableName in (select VariableName from SeanVault.dbo.TempVarNames) 
+0

'変数名(SeanVault.dbo.TempVarNamesから変数名を選択)でCOLLATE SQL_Latin1_General_CP1_CI_AS' – Lamak

+0

@Lamakなぜこれがコメントしていない答えは? – iamdave

+0

@iamdaveコードのみの回答は良い答えではないので...と私はちょっと疲れているので、それは良い答えにするために必要なものを書いたくありません – Lamak

答えて

0

2つの列VariableIDとVariableNamesの照合順序が異なります。長期的な解決策は、あなたのカラムの定義を変更することであろう

IF OBJECT_ID('SeanVault.dbo.TempVarIDs', 'U') IS NOT NULL 
    DROP TABLE SeanVault.dbo.TempVarIDs; 
Select VariableID, VariableName 
INTO SeanVault.dbo.TempVarIDs 
from Variable 
Where VariableName COLLATE SQL_Latin1_General_CP1_CI_AS in (select VariableName COLLATE SQL_Latin1_General_CP1_CI_AS from SeanVault.dbo.TempVarNames) 

を、目的の照合を追加:あなたは(あなたがたとえば、あなたのデータモデルをコントロールしていない場合)、明示的な照合を提供することで、照合設定をバイパスすることができます:

ALTER TABLE Variable 
     ALTER COLUMN VariableID COLLATE SQL_Latin1_General_CP1_CI_AS 
GO 

    ALTER TABLE TempVarNames 
     ALTER COLUMN TempVarNames COLLATE SQL_Latin1_General_CP1_CI_AS 
GO 
+0

パーフェクト!それが働いてくれてありがとう。これらは一時的に使用されるテーブルで、プロシージャの実行後に削除されるため、ALTERルートには行かないと思います。 – SeanDon

関連する問題