我可以在SSRS查询中使用SQL用户定义的函数吗?

时间:2015-03-10 12:59:04

标签: sql-server reporting-services

当查询引用SQL用户定义函数时,我似乎在SSRS中构建数据集时遇到问题。 e.g。

SELECT ISNULL(Period, dbo.FnuPeriodFromDate(PerBegDt)) as Period
  FROM MyTab

这样做是否合法?它拒绝它作为无效语法,但查询在SSMS中有效。

2 个答案:

答案 0 :(得分:2)

查询构建器将拒绝许多内容,在呈现报表后实际上可以正常工作。例如,我的一个查询使用了这个:

WITH X AS 
(
  SELECT TOP (30) n = ROW_NUMBER() OVER (ORDER BY m1.number)-1
  FROM [master].dbo.spt_values AS m1
  CROSS JOIN [master].dbo.spt_values AS m2
) 

它会向我抛出错误,但报告运行正常(SSRS不喜欢OVER关键字)。如果您在数据集上点击“确定”并且“报告数据”选项卡显示字段名称,它仍然有效。只需使用SSMS或在Visual Studio中使用BI工具运行查询,并确保您的数据符合您的预期。

您可以转到菜单栏查看报告数据 - > '查看' - > '报告数据'

答案 1 :(得分:0)

Sonny的建议是正确的解决方案 - 即

"尝试通过将此操作添加到您的查询中来授予自己执行该过程的权限:GRANT EXECUTE ON [storedProcName] TO [userName]"

非常感谢。