【发布时间】:2017-09-20 08:26:35
【问题描述】:
我的问题可能与this question 同名:实时部署时的Sql 排序问题。然而,这个问题已经有 8 年历史了,并且讨论了不同 sql server 上的问题。
我的信息如下:
SQL Server 是土耳其语_100_CI_AI Windows Collation Name (Transact-SQL)
DB 是土耳其语_CI_AS (SQL Server Collation Name):
和
- 开发环境:Windows 8
- 测试环境:windows 2012
来自this问题:
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' AS Place, 'Arizona' As State, Country FROM DEPT2
在 sql server 上正常工作。
部署到具有相同连接字符串的测试服务器(到相同的数据库)时会出现问题 所以我只能猜测与windows os差异相关的问题。
错误信息是:
无法执行 varchar 值到 varchar 的隐式转换,因为 UNION ALL 运算符中的“Turkish_CI_AS”和“Turkish_100_CI_AI”之间的排序规则冲突导致值的排序规则未解决。
当我运行我的 UNION sql 查询时。
仅在更改 Windows 操作系统的情况下,可能是什么原因以及如何处理给定的错误?
编辑:作为同事的结束问题告知 db 不一样,所以问题不再有效
【问题讨论】:
-
tempdb的排序规则是什么? -
同sql server:
Turkish_100_CI_AI -
你是什么COLUMN City排序规则?如果您没有更改它,它应该具有与 db 排序规则相同的排序规则,并且您根本不需要使用 COLLATE DATABASE_DEFAULT。您的查询中没有临时对象,如果 column collation = db collation,它应该表现良好
标签: sql-server collation