Windows部署窗口时出现排序错误2012

问题描述:

我的问题的标题可能与this question相同:部署生活时出现的Sql整理问题。然而,这个问题是8岁,并讨论在不同的SQL服务器上的问题。Windows部署窗口时出现排序错误2012

我的相关信息如下:

  • 开发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操作系统的环境中?

编辑:关闭问题的同事告知分贝是不一样的,所以问题是,没有更多有效的

+0

什么'tempdb'的核对(也许你查询另一个数据库中,那么你想执行的)? –

+0

与sql服务器相同:'Turkish_100_CI_AI' –

+0

什么是COLUMN城市整理?如果您没有更改它,它应该与db归类具有相同的归类,并且根本不需要使用COLLATE DATABASE_DEFAULT。在查询中没有临时对象,并且如果列归类= db归类,它应该表现良好 – sepupic

请执行这个查询在这两种环境:如果你得到的

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。

所以,请检查一次你的数据库整理,您的列排序规则和数据库

+0

如问题所述,db env是相同的。唯一的区别是iis所以操作系统 –

+0

@asdf_enel_hak您可以请我的查询结果更新您的帖子,并与您的查询执行错误,都作为图片吗? – sepupic

+0

运行结果:'Turkish_CI_AS \t Turkish_CI_AS \t SPCMS' –