使用 2 个版本的 SQL Server 的排序规则冲突

Posted

技术标签:

【中文标题】使用 2 个版本的 SQL Server 的排序规则冲突【英文标题】:Collation conflict using 2 versions of SQL Server 【发布时间】:2013-12-09 00:00:13 【问题描述】:

我正在开发 2 个版本的 SQL Server,即 2005 和 2008 R2。

从 2008 R2 开始,我创建了一个链接服务器,它将连接到较旧的 SQL Server 2005 实例。

我的服务器 (2008) 上有一张桌子,如下所示

成员

id                  name     
0002320         AOne Enterprises Motihari
0002321         AOne Enterprises Siliguri

驻留在远程服务器上的另一个表包含每个代理的活动

id  member_code agent   rr_no   txn_date    amount

我在下面发起了一个查询

select top 5 * 
from [192.168.6.3].sync.dbo.agents_log
where member_code IN 
      (select id from members where name like 'AOne Enterprises%')

我试图从分布式数据库中提取 AOne Enterprises 的所有活动日志,因此我需要创建一个链接服务器。

我收到了这个错误:

消息 468,第 16 级,状态 9,第 1 行 无法解决等于操作中“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_BIN”之间的排序规则冲突。

【问题讨论】:

【参考方案1】:

不完全确定您需要什么,但如果它是唯一的整理问题,您可以在下面做

SELECT TOP 5 * 
FROM   [192.168.6.3].sync.dbo.agents_log
WHERE  member_code COLLATE SQL_Latin1_General_CP1_CI_AS 
IN (SELECT id
    FROM   members
    WHERE  NAME LIKE 'AOne Enterprises%')

我刚刚添加了 COLLATE SQL_Latin1_General_CP1_CI_AS ,也许它可以工作

【讨论】:

以上是关于使用 2 个版本的 SQL Server 的排序规则冲突的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server - 使用排序规则

Sql server2016有几个版本

mysql技术内幕 第五版

sql server 分组成绩前100名的数据

SQL Server 2005 登录密码更改差异

SQL Server的自定义排序功能