SQL Server 2008 R2 中不同数据库排序规则之间的排序规则冲突
Collation conflict between different database collation in SQL Server 2008 R2
我有两个不同的服务器:
服务器 1:它有数据库 DB1
和 collation
Latin1_General_CI_AS
服务器 2:有 DB2
和 collation
SQL_Latin1_General_CP1_CI_AS
我想到了需要将 DB1
从 server 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
我有两个不同的服务器:
服务器 1:它有数据库 DB1
和 collation
Latin1_General_CI_AS
服务器 2:有 DB2
和 collation
SQL_Latin1_General_CP1_CI_AS
我想到了需要将 DB1
从 server 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