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:它有数据库 DB1collation Latin1_General_CI_AS

服务器 2:有 DB2collation SQL_Latin1_General_CP1_CI_AS

我想出了我需要将DB1server 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 R2数据库镜像部署

将 SQL Server 2008 r2 降级到 SQL Server 2008

数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?

如何在 SQL Server 2014 中从 SQL Server 2008 R2 恢复备份?

如何实现 sql2008 和 sql2012 共存?