当查询引用SQL用户定义函数时,我似乎在SSRS中构建数据集时遇到问题。 e.g。
SELECT ISNULL(Period, dbo.FnuPeriodFromDate(PerBegDt)) as Period
FROM MyTab
这样做是否合法?它拒绝它作为无效语法,但查询在SSMS中有效。
答案 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)
"尝试通过将此操作添加到您的查询中来授予自己执行该过程的权限:GRANT EXECUTE ON [storedProcName] TO [userName]"
非常感谢。