You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:SSRS Report Manager无法返回预期存储过程数据集结果

解决SSRS Report Manager与Report Builder存储过程数据集结果不一致的问题

以下是针对该问题的排查和解决步骤:

  • 核对执行上下文差异
    Report Builder通常使用当前登录用户的凭据执行(即使数据源配置了共享凭据,本地运行可能走Windows身份模拟),而Report Manager运行时依赖SSRS服务账号或数据源指定的专用凭据。先确认两者实际执行存储过程的账号是否完全一致:可以在数据集里添加SELECT SYSTEM_USER查询,分别在两种环境下运行,对比返回的账号。另外,检查存储过程是否依赖会话级设置(如SET DATEFORMAT、SET LANGUAGE),不同环境的会话参数差异可能导致逻辑分支返回空结果。

  • 深度排查权限(不限于EXECUTE)
    即便DBA认为无需VIEW DEFINITION权限,也要确认存储过程内部是否依赖需要额外权限的对象:比如使用动态SQL、访问系统视图(如sys.tables)、调用其他有权限要求的存储过程。可以执行以下SQL查询存储过程的权限关联:

    SELECT dp.NAME AS principal_name, dp.type_desc AS principal_type, 
           o.NAME AS object_name, p.permission_name
    FROM sys.database_permissions p
    JOIN sys.objects o ON p.major_id = o.object_id
    JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
    WHERE o.NAME = '你的存储过程名称';
    

    也可临时给SSRS服务账号添加VIEW DEFINITION权限测试,若问题解决,说明存储过程内部确实需要该权限,再和DBA沟通具体依赖场景。

  • 检查执行计划与缓存
    Report Manager可能缓存了旧的执行计划,导致返回空结果。可在数据库执行DBCC FREEPROCCACHE (你的存储过程缓存ID)清除特定缓存,或重启SSRS服务刷新缓存。另外,对比两种环境的执行计划:在Report Builder运行时捕获执行计划,Report Manager运行后查看数据库的执行计划缓存,排查是否因参数嗅探导致执行计划选择错误,进而返回空结果。

  • 验证数据源配置细节
    确认Report Manager中数据源的凭据是否正确保存:有时配置共享数据源时,凭据未正确加密存储,导致实际执行时使用匿名或错误账号,可重新输入凭据并保存测试。同时检查数据源的模拟设置,若使用Windows身份验证,确认SSRS服务账号是否具备委托权限,排查是否存在Kerberos双重跳问题导致无法正常访问数据库。

结果对比截图

Report Builder 数据集结果

Report Builder 数据集结果

SSRS Report Manager 数据集结果

SSRS Report Manager 数据集结果

内容的提问来源于stack exchange,提问作者Andrew Phommathep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:04:51