【发布时间】:2017-10-25 14:17:57
【问题描述】:
我使用的是 SQL Server 2014 Enterprise。我从客户那里收到了许多不同的数据库,我需要检查表、列名、数据库之间的记录数。我在使用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 部门参与进来,因为我没有这样做的权限。
【问题讨论】:
-
明白了,谢谢marc_s
标签: sql-server sql-server-2014 collation except accent-sensitive