目前正在使用SQL Server 2014,并且在存储过程中存在Collation问题。我目前有一个运行存储过程的报告,该代码在SSMS中运行时工作正常,但我注意到,当它作为SSRS报告的一部分运行时,Latin1_General_CI_AS_KS_WS
和{{1}之间存在整理问题}}
我的数据库设置为Latin1_General_CI_AS
以及我的所有表格列,因此我不知道它会导致Latin1_General_CI_AS
不一致,有人可以提出任何建议吗?
由于
答案 0 :(得分:1)
COLLATE
是SSRS的默认排序规则。
要么在所有字符串比较中使用ALTER DATABASE
属性编写SQL查询,要么使用正确的默认排序规则重新安装SSRS。
请记住,如果您使用SELECT
ColumnName = QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + '.' + QUOTENAME(c.name),
Collation = c.collation_name
FROM
sys.schemas s
INNER JOIN sys.tables t ON t.schema_id = s.schema_id
INNER JOIN sys.columns c ON c.object_id = t.object_id
WHERE
C.collation_name is not null
ORDER BY
1
更改SSRS数据库归类,则不会影响已创建的对象,只会影响从那时起的新对象。
如果这是特定列(而不是整个数据库)的问题,则可以运行此查询以检查所有列的当前排序规则。
ALTER TABLE <tablename> ALTER COLUMN <columnname> <type> COLLATE <newCollate>
然后使用{{1}}进行更改。