在Power BI中运行时,SQL报告无效语法

时间:2016-01-21 14:19:32

标签: sql sql-server powerbi

我编写了一个SQL脚本,在SQL Management Studio中直接执行时运行正常。但是,当将其作为源输入到Power BI时,它会报告它的语法不正确。

这是查询:

            EXEC "dbo"."p_get_bank_balance" '2'

但是,语法显然不正确?见图:

enter image description here

非常感谢任何帮助。

编辑***

删除双引号时:

enter image description here

4 个答案:

答案 0 :(得分:7)

我很久以前在power bi网站上发现了同样的问题:

http://community.powerbi.com/t5/Desktop/Use-SQL-Store-Procedure-in-Power-BI/td-p/20269

  

您必须使用DirectQuery模式,在该模式下,您无法使用存储过程连接到数据。使用导入模式再次尝试或直接使用SELECT语句。

答案 1 :(得分:2)

在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数据库

答案 2 :(得分:0)

使用“导入”数据连接模式,存储过程可以正常工作 在“直接查询”数据连接模式下,查询语法必须如下所示:

声明@sqlCommand varchar(100)='dbo.p_get_bank_balance' 声明@ p1 int = 2

exec @sqlCommand @ p1 = @ p1

Remerber:使用Direct Query最多可以建立一个数据源连接。如果要调用很多SP,则只能在直接查询模式下调用其他SP,

答案 3 :(得分:0)

尝试使用导入代替直接查询。可能由于您在其中使用Temp表而显示错误。使用子查询创建查询并删除Temp表并尝试。或者,您可以用作导入而不是直接查询