Sql SSRS中的排序冲突

Sql SSRS中的排序冲突,sql,sql-server,reporting-services,sql-server-2014,Sql,Sql Server,Reporting Services,Sql Server 2014,当前正在使用SQL Server 2014,并且存储过程的排序规则存在问题。我目前有一个运行存储过程的报告,该代码在SSMS中运行时工作正常,但我注意到,虽然它作为SSRS报告的一部分运行,但在Latin1_General_CI_as_KS_WS和Latin1_General_CI_as之间存在排序问题 我的数据库设置为Latin1\u General\u CI\u AS以及我的所有表列,因此我不知道它将此Latin1\u General\u CI\u AS\u KS\u WS不一致性拉到哪里,

当前正在使用SQL Server 2014,并且存储过程的排序规则存在问题。我目前有一个运行存储过程的报告,该代码在SSMS中运行时工作正常,但我注意到,虽然它作为SSRS报告的一部分运行,但在
Latin1_General_CI_as_KS_WS
Latin1_General_CI_as
之间存在排序问题

我的数据库设置为
Latin1\u General\u CI\u AS
以及我的所有表列,因此我不知道它将此
Latin1\u General\u CI\u AS\u KS\u WS
不一致性拉到哪里,有人能提供任何建议吗


谢谢

拉丁语1_General_CI_AS_KS_WS
是SSR的默认排序规则

要么在所有字符串比较中使用
COLLATE
属性编写SQL查询,要么使用正确的默认排序规则重新安装SSR

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
请记住,如果使用
alterdatabase
更改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

然后使用
ALTER TABLE ALTER COLUMN COLLATE
来更改它。

感谢您的回复Ezlo,我的报表数据库已经设置为Latin1_General_CI_,因此我认为这是特定于表的,因为我有许多报表运行时没有这个问题。@PJD我添加了一个查询,您可以使用它来检查当前的排序。试着找到破坏你报告的人。