SQL报告在Power BI中运行时语法无效
我编写了一个SQL脚本,直接在SQL Management Studio中执行时运行良好。但是,当将其作为源输入Power BI时,它会报告其语法不正确 以下是查询:SQL报告在Power BI中运行时语法无效,sql,sql-server,powerbi,Sql,Sql Server,Powerbi,我编写了一个SQL脚本,直接在SQL Management Studio中执行时运行良好。但是,当将其作为源输入Power BI时,它会报告其语法不正确 以下是查询: EXEC "dbo"."p_get_bank_balance" '2' 但是,语法显然不正确?见图: 非常感谢您的帮助 编辑*** 删除双引号时(根据Tab Alleman的建议): 我很久以前在power bi网站上在线发现了相同的问题: 您必须使用DirectQuery模式,在该模式下,您无法使用
EXEC "dbo"."p_get_bank_balance" '2'
但是,语法显然不正确?见图:
非常感谢您的帮助
编辑***
删除双引号时(根据Tab Alleman的建议):
我很久以前在power bi网站上在线发现了相同的问题: 您必须使用DirectQuery模式,在该模式下,您无法使用存储过程连接到数据。请使用导入模式重试,或直接使用SELECT语句
在DirectQuery模式下,PowerBI会自动包装您的查询,如下所示:
select*from([your query])
,如果您尝试在SSMS中使用存储过程(即
select * from (exec dbo.getData)
您得到了上面看到的错误
解决方案是,您必须将存储过程调用放在对本地服务器的OPENQUERY调用中,即
select * from OPENQUERY(localServer, 'DatabaseName.dbo.getData')
先决条件是:使用启用OPENQUERY中的本地服务器访问
exec sp_serveroption @server = 'YourServerName'
,@optname = 'DATA ACCESS'
,@optvalue = 'TRUE'
然后确保在OPENQUERY中使用三部分表示法,因为所有调用都默认为master
database,并且使用“导入”数据连接模式存储过程工作
在“直接查询”数据连接模式下,查询语法必须如下所示:
声明@sqlCommand varchar(100)='dbo.p_get_bank_balance'
声明@p1int=2
exec@sqlCommand@p1=@p1
Remerber:最多一个直接查询的数据源连接。如果要调用多个SP,则只有一个SP处于直接查询模式,其他SP处于导入模式尝试使用导入而不是直接查询。它可能显示错误,因为您在其中使用临时表。使用子查询创建查询并删除临时表,然后重试。或者您可以使用as Import而不是直接查询它会工作。我怀疑它是引用的标识符。试试[dbo]。[p_get_bank_balance]嗨@TabAlleman,我试过你的建议,我仍然得到相同的错误。说清楚一点,你删除了架构和表名周围的引号?你能发布一个截图吗?嗨@TabAlleman,我已经把截图添加到问题中了。这就是我会尝试的。我没有主意了,这一定是一个权力双性恋怪癖,我没有权力双性恋玩。我在你的问题中添加了Power-BI标签,希望能吸引该工具的专家。您可以尝试的另一件事是启动探查器跟踪,并查看在运行该行时Power BI尝试执行的代码。欢迎使用堆栈溢出!虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。请看这篇文章:。