1

我在 ADF 中参数化链接服务(SQL 服务器),但无法将不同服务属性的参数重用为动态内容。

我为 SQL Server 属性创建了更多参数:

  • 服务器名称
  • 环境
  • 数据库名称
  • 数据库用户名

Key Vault 用于存储属性的敏感信息,其中创建的 Secret 名称类似于“POC-USER-MYDOMAIN-MYUSER”。

链接服务的 DBUserName 参数包含一个 Windows 登录,如“MyDomain\MyUser”。我将 DBUserName 参数用于属性“用户名”和存储在 Key Vault 中的密码。

属性“用户名”具有此动态内容“@{linkedService().DBUserName}”,Key Vault 机密名称具有此动态内容“@{linkedService().Environment}-USER-@{replace(linkedService()。 DBUserName, '', '-')}"。

联动服务

执行“测试连接”时,我使用以下参数:

参数

并且“测试连接”返回此错误:

错误

我可以让它工作,如果我创建一个名为“DBUserNameCopy”的新参数,从“DBUserName”复制值。然后更改属性“用户名”或属性“Key Vault 机密名称”动态内容以使用新参数。并执行“测试连接”:

双参数

因此,这两个属性动态内容工作正常,但前提是它们不共享一个参数。

我尝试了不同的方法来避免此错误,但最终得出的结论是:如果您使用替换功能,则不能在更多属性中使用相同的参数(我不知道它是否与所有功能有关)。

有谁知道如何让它工作?

4

1 回答 1

0

我试过这个场景,似乎你不能在两个动态表达式中使用相同的链接服务参数。在您的情况下,您使用了 DBUsername 两次,一次是在用户名动态表达式中,第二次是在构造密钥库机密名称中。除了您的解决方法之外,要创建具有不同名称的参数,我会在链接服务之外操纵您传递给密钥库秘密名称参数的值,在引用链接服务的数据集中执行此操作,在数据集定义中,包括准备参数值的动态表达式。

于 2021-07-06T02:43:14.497 回答