【问题标题】:Cannot resolve the collation conflict between temp table and sys.objects无法解决临时表和 sys.objects 之间的排序规则冲突
【发布时间】:2012-08-19 16:20:55
【问题描述】:

以下 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 行

无法解决等于操作中Danish_Norwegian_CI_ASSQL_Latin1_General_CP1_CI_AS之间的排序规则冲突。

我尝试将其附加到查询中,但它仍然返回相同的错误:

COLLATE SQL_Latin1_General_CP1_CI_AS ASC

我该如何解决这个问题?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    在 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
    

    【讨论】:

      【解决方案2】:

      当您创建表 #exclude 时,您需要将 COLLATE DATABASE_DEFAULT 添加到任何文本字段 - 如下所示:

      CREATE TABLE #exclude(name VARCHAR(256) COLLATE DATABASE_DEFAULT NULL)
      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
      

      【讨论】:

        猜你喜欢
        • 2014-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 2018-10-20
        相关资源
        最近更新 更多