Azure ARM模板部署时参数化链接服务的连接字符串疑问
Azure Data Factory参数化链接服务ARM部署问题解决
- 不用手动替换连接字符串里的
@{linkedService().dbName}和@{linkedService().dbUserName},问题根源是导出ARM模板时,系统没自动把链接服务的参数映射成模板的可输入参数。 - 手动修改ARM模板就能解决,步骤如下:
- 在模板的
parameters节点下新增两个参数:"dbName": { "type": "string", "metadata": { "description": "Azure SQL数据库名称" } }, "dbUserName": { "type": "string", "metadata": { "description": "Azure SQL登录用户名" } } - 找到链接服务的定义段,把它自身的
parameters里的dbName和dbUserName的默认值改成引用模板参数:"parameters": { "dbName": { "type": "string", "defaultValue": "[parameters('dbName')]" }, "dbUserName": { "type": "string", "defaultValue": "[parameters('dbUserName')]" } } - 连接字符串里的表达式保持原样即可,无需修改:
Server=tcp:@{linkedService().serverName},1433;Initial Catalog=@{linkedService().dbName};Persist Security Info=False;User ID=@{linkedService().dbUserName};Password=@{linkedService().dbPassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
- 在模板的
- 额外建议:密码不要直接写在模板里,用Azure Key Vault存储密钥,让链接服务引用密钥,部署时无需输入明文密码,安全性更高。
- 修改完成后再部署模板,就会出现
dbName和dbUserName的单独输入字段,不用再填写完整的连接字符串。
内容的提问来源于stack exchange,提问作者Dmitriy Ryabin
相关产品推荐
相关产品推荐

