SQL Server 2008 R2 中不同数据库排序规则之间的排序规则冲突
Posted
技术标签:
【中文标题】SQL Server 2008 R2 中不同数据库排序规则之间的排序规则冲突【英文标题】:Collation conflict between different database collation in SQL Server 2008 R2 【发布时间】:2019-03-07 05:03:10 【问题描述】:我有两个不同的服务器:
服务器 1:它有数据库 DB1
和 collation
Latin1_General_CI_AS
服务器 2:有 DB2
和 collation
SQL_Latin1_General_CP1_CI_AS
我想出了我需要将DB1
从server 1
备份和恢复到server 2
的场景。
当我通过linked server
运行一个简单的选择语句时,我最终会说Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
出现错误
【问题讨论】:
【参考方案1】:在字符列的条件两侧使用:COLLATE DATABASE_DEFAULT。下面的例子。
select * from es
inner join es e2
on es.year COLLATE DATABASE_DEFAULT = e2.year COLLATE DATABASE_DEFAULT
【讨论】:
【参考方案2】:我认为一个简单的解决方法是将 server1 上的 DB1 恢复到新数据库“DB2”;那么可以尝试将DB2的排序规则更改为SQL_Latin1_General_CP1_CI_AS,最后尝试将DB2恢复到server2。
我还找到了另一个答案here,这可能会有所帮助。
【讨论】:
创建 DB2 对于保持原始数据库不变以避免任何数据库问题很重要。以上是关于SQL Server 2008 R2 中不同数据库排序规则之间的排序规则冲突的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL Server 2008 r2 降级到 SQL Server 2008
数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?