sql-server - 有排序规则问题的 SQL 查询
问题描述
我正在尝试比较来自测试实例和实时实例的视图的数据结果。两个实例都在同一台服务器上。
我已经在它们之间创建了一个链接,因此我可以在它们之间进行查询,但是我收到一个排序规则错误 - 无法解决 EXCEPT 操作中“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AI”之间的排序规则冲突。
我正在尝试使用此查询来比较结果,因为它们应该是两个实例的相同结果:
SELECT * FROM (SELECT * FROM
INSTANCE1.dbo.View1) as TEST
EXCEPT
SELECT * FROM (SELECT * FROM
[SERVER\INSTANCE2].Database.dbo.View1) as LIVE
我试图将查询包装在 CTE 中,并且还一直在尝试指定默认排序规则,但我尝试的一切都不起作用。
有没有办法可以在单独的实例上查询这两个视图来比较结果而不创建临时表并让 SQL 忽略冲突?
非常感谢你,我很感激任何帮助。
解决方案
好吧,错误消息会告诉您确切的问题是什么,但不是它属于哪一列或哪一列,并且因为您使用select *
我也不知道列名是什么。您将需要识别那些存储字符串的表中的列,然后强制使用相同的排序规则,我认为是这样的(未经测试):
SELECT stringcol
FROM (
SELECT stringcol collate SQL_Latin1_General_CP1_CI_AS
FROM INSTANCE1.dbo.View1) as TEST
EXCEPT
SELECT stringcol
FROM (SELECT stringcol collate SQL_Latin1_General_CP1_CI_AS
FROM [SERVER\INSTANCE2].Database.dbo.View1
) as LIVE
因此,您需要指定列,还需要指定用于字符串列的排序规则。
推荐阅读
- html - 在 CSS 中生成内容列表看起来很尴尬
- javascript - mysql在控制台中抛出错误并停止nodejs服务器
- reactjs - A View is partially hidden after wrapped by TouchableOpacity
- firebase - Flutter Apple 登录 - 空电子邮件
- python - Python Flask:{% include ...%} 中的变量
- c++ - 如何在 GPU 内核中使用特征稀疏矩阵
- javascript - gscript 在尝试将 csv 保存到谷歌表时没有选择最新的邮件
- sql-server - 如何将“类型”作为输入参数传递给 Postgresql 中的 func
- c++ - C++ 中递增全局变量与局部变量之间的行为差异
- javascript - 在多维数组中搜索具有匹配值的对象