Azure Synapse 如何在SQL脚本中获取环境名实现脚本跨环境运行
实现脚本跨环境复用的两种常用方案:
方案1:SQLCMD变量方案(适配CI/CD部署,推荐)
Synapse 原生支持SQLCMD模式,只需定义一次环境变量,切换环境时仅修改变量取值即可,不需要改动脚本主体逻辑:
- 在Synapse Studio运行前先开启顶部工具栏的SQLCMD模式
- 使用如下脚本:
-- 切换环境时仅需修改此处存储账号名即可,支持dev/qa/uat/prod四套环境取值 :setvar StorageAccount "****devsa" IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'Datalake') BEGIN CREATE EXTERNAL DATA SOURCE [DataLake] WITH (LOCATION = CONCAT('https://', $(StorageAccount), '.blob.core.windows.net/')); END;
如果是用CI/CD流水线部署,你可以直接把StorageAccount配置为流水线的环境变量,部署时会自动对应不同环境替换取值,完全不需要手动修改脚本。
方案2:动态SQL方案(无需开启SQLCMD模式)
如果你不方便开启SQLCMD模式,可以用变量拼接动态SQL执行:
-- 切换环境时仅修改此处取值即可 DECLARE @StorageAccount NVARCHAR(60) = '****devsa' DECLARE @Location NVARCHAR(200) = CONCAT('https://', @StorageAccount, '.blob.core.windows.net/') DECLARE @ExecSQL NVARCHAR(MAX) = N' IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = ''Datalake'') BEGIN CREATE EXTERNAL DATA SOURCE [DataLake] WITH (LOCATION = ''' + @Location + '''); END;' EXEC sp_executesql @ExecSQL
内容的提问来源于stack exchange,提问作者Salah K.
相关产品推荐
相关产品推荐

