我正在使用 SQL Server 2014 企业版。我从客户那里收到了许多不同的数据库,我需要检查表、列名、数据库之间的记录数。我在使用该Except
功能时遇到了整理问题:
SELECT c.name "ColumnName"
FROM [DB1].sys.tables t
INNER JOIN [DB1].sys.all_columns c ON t.object_id = c.object_id
INNER JOIN [DB1].sys.types ty ON c.system_type_id = ty.system_type_id
WHERE t.name = 'test'
EXCEPT
SELECT c.name
FROM [DB2].sys.tables t
INNER JOIN [DB2].sys.all_columns c ON t.object_id = c.object_id
INNER JOIN [DB2].sys.types ty ON c.system_type_id = ty.system_type_id
WHERE t.name = 'test2'
这会产生错误:
无法解决 EXCEPT 操作中“SQL_Latin1_General_CP1_CI_AI”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。
仅供参考: DB1
是“SQL_Latin1_General_CP1_CI_AI”,DB2
是“SQL_Latin1_General_CP1_CI_AS”
这是否可以通过诸如我的查询中的 COLLATE 函数来解决?如果是这样,怎么做?
另外,关于我在网上找到的以下内容:
USE master;
GO
ALTER DATABASE [DB2]
COLLATE SQL_Latin1_General_CP1_CI_AI ;
GO
我必须让我们的 IT 部门参与进来,因为我没有权限这样做。