7

次の T-SQL コード:

CREATE TABLE #exclude(name VARCHAR(256))
INSERT INTO #exclude VALUES('someprefix_someprocedure')

SELECT 'someschema.' + sys.objects.name
FROM sys.objects
  LEFT JOIN #exclude ON sys.objects.name = #exclude.name
WHERE sys.objects.name LIKE 'someprefix_%'
  AND type IN ('FN', 'TR', 'P')
  AND #exclude.name IS NULL
ORDER BY sys.objects.name ASC

このエラーを返します:

メッセージ 468、レベル 16、状態 9、行 4

equal to 操作でDanish_Norwegian_CI_ASとの間の照合の競合を解決できません。SQL_Latin1_General_CP1_CI_AS

これをクエリに追加しようとしましたが、それでも同じエラーが返されます:

COLLATE SQL_Latin1_General_CP1_CI_AS ASC

どうすればこれを修正できますか?

4

2 に答える 2

2

WHERE または ON (JOIN) 句で、このエラーが発生するフィールドに次を追加します COLLATE DATABASE_DEFAULT

例 (上記の質問)

CREATE TABLE #exclude(name VARCHAR(255))
INSERT INTO #exclude VALUES('someprefix_someprocedure')

SELECT 'someschema.' + sys.objects.name
FROM sys.objects
  LEFT JOIN #exclude ON sys.objects.name COLLATE DATABASE_DEFAULT = #exclude.name COLLATE DATABASE_DEFAULT
WHERE sys.objects.name LIKE 'someprefix_%'
  AND type IN ('FN', 'TR', 'P')
  AND #exclude.name IS NULL
ORDER BY sys.objects.name ASC
于 2014-02-26T11:24:09.843 に答える