能否在Synapse Workspace中通过SQL文件引用运行其他SQL文件?
在Synapse Workspace里引用并运行独立SQL文件的可行方案
先说说你用的:r命令为啥不行
:r是SSMS和Azure Data Studio里SQLCMD模式的命令,但Synapse Studio的SQL编辑器默认没开这个模式,所以直接写会报错。
开SQLCMD模式就能用:r引用脚本
要是想继续用:r,可以这么操作:
- 打开你的主SQL文件,点编辑器顶部的SQLCMD按钮(就在运行按钮旁边)
- 开启后,就能用
:r "MyFolder/MyQuery.sql"(注意路径是相对于主文件的相对路径)来引用同Workspace文件夹里的SQL文件了
用存储过程实现的方法
要是不想依赖SQLCMD模式,也能靠存储过程动态执行:
- 先把独立SQL文件的内容读进变量里,用
OPENROWSET就行:
注意:得确保Synapse工作区有对应存储容器的读取权限DECLARE @SQLContent NVARCHAR(MAX) SELECT @SQLContent = BulkColumn FROM OPENROWSET(BULK 'https://<你的存储账户>.dfs.core.windows.net/<Synapse工作区容器>/MyFolder/MyQuery.sql', SINGLE_CLOB) AS Data - 然后动态执行读取到的SQL内容:
EXEC sp_executesql @SQLContent
额外提醒
- 用存储过程方案时,得注意SQL注入风险,只引用可信的SQL文件
- 要是用的是Synapse专用SQL池,
OPENROWSET的使用得满足特定的权限和配置要求
内容的提问来源于stack exchange,提问作者ByronSchuurman
相关产品推荐
相关产品推荐

