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

SQL reporting invalid syntax when run in Power BI

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

这是查询:

            EXEC "dbo"."p_get_bank_balance" '2'

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

非常感谢任何帮助。

编辑 ***

删除双引号后(根据 Tab Alleman 的建议):

我前段时间在 power bi 网站上发现了同样的问题:

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

You must be using DirectQuery mode, in which you cannot connect to data with stored procedures. Try again using Import mode or just use a SELECT statement directly.

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

与"Import"数据连接模式存储过程工作 使用 "Direct Query" 数据连接模式,查询语法必须如下所示:

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

exec @sqlCommand @p1 = @p1

注意:最多有一个数据源与 Direct Query 连接。如果要调用多个SP,只能一个用Direct Query方式,其他用Import方式

尝试使用 导入 而不是直接查询。它可能显示错误,因为您在其中使用了 Temp table。使用子查询创建查询并删除 Temp table 并尝试。或者您可以使用 Import 而不是 Direct Query 它会起作用。