SQL Server 2008 R2 中不同数据库排序规则之间的排序规则冲突

Collation conflict between different database collation in SQL Server 2008 R2

我有两个不同的服务器:

服务器 1:它有数据库 DB1collation Latin1_General_CI_AS

服务器 2:有 DB2collation SQL_Latin1_General_CP1_CI_AS

我想到了需要将 DB1server 1 备份和还原到 server 2 的场景。

当我通过 linked server 运行 一个简单的 select 语句时,我以 Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

结束错误

我认为一个简单的解决方法是将 server1 上的 DB1 恢复到新数据库 "DB2";那么你可以尝试将DB2的排序规则更改为SQL_Latin1_General_CP1_CI_AS,最后尝试将DB2恢复到server2。

我还找到了另一个可能有用的答案 here

在字符列的条件两边使用 : COLLATE DATABASE_DEFAULT。示例如下。

    select * from es
    inner join es e2
    on es.year COLLATE DATABASE_DEFAULT = e2.year COLLATE DATABASE_DEFAULT