Windows部署窗口时出现排序错误2012
我的问题的标题可能与this question相同:部署生活时出现的Sql整理问题。然而,这个问题是8岁,并讨论在不同的SQL服务器上的问题。Windows部署窗口时出现排序错误2012
我的相关信息如下:
SQL Server是Turkish_100_CI_AI Windows Collation Name (Transact-SQL)
DB是Turkish_CI_AS(SQL Server Collation Name):
和
- 开发ENV:Windows 8的
- 测试ENV:窗口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操作系统差异相关的问题。
错误信息是:不能进行
VARCHAR值到VARCHAR的隐式转换,因为该值的排序规则是未解决的,由于“Turkish_CI_AS”和“Turkish_100_CI_AI”在UNION ALL操作者之间的排序规则冲突。
当我运行我的UNION sql查询。
什么可能是原因,以及如何才能处理给定的错误,仅在更改windows操作系统的环境中?
编辑:关闭问题的同事告知分贝是不一样的,所以问题是,没有更多有效的
请执行这个查询在这两种环境:如果你得到的
select COLUMNPROPERTYEX(object_id('dbo.DEPT1'), 'City', 'Collation') as column_collation,
DATABASEPROPERTYEX(db_name(), 'Collation') as db_collation, db_name() as db_name;
从您的问题的确切查询错误您的列整理和数据库整理之间的差异。
如果您没有明确定义列归类,则它是从数据库归类继承而来的,并且在执行查询时完全不需要COLLATE WHATIN DATABASE。
如果您的查询是在另一个数据库的上下文中执行的,或者您使用临时表(使用tempdb的归类创建的),那么您需要使用COLLATE。
所以,请检查一次你的数据库整理,您的列排序规则和数据库
如问题所述,db env是相同的。唯一的区别是iis所以操作系统 –
@asdf_enel_hak您可以请我的查询结果更新您的帖子,并与您的查询执行错误,都作为图片吗? – sepupic
运行结果:'Turkish_CI_AS \t Turkish_CI_AS \t SPCMS' –
什么'tempdb'的核对(也许你查询另一个数据库中,那么你想执行的)? –
与sql服务器相同:'Turkish_100_CI_AI' –
什么是COLUMN城市整理?如果您没有更改它,它应该与db归类具有相同的归类,并且根本不需要使用COLLATE DATABASE_DEFAULT。在查询中没有临时对象,并且如果列归类= db归类,它应该表现良好 – sepupic