【问题标题】:ADF error when reusing parameter in replace function在替换函数中重用参数时出现 ADF 错误
【发布时间】:2021-07-06 10:43:14
【问题描述】:

我正在 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, '', '-')}"。

Linked service

当执行“测试连接”时,我使用这些参数:

Parameters

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

Error

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

DoubleParameters

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

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

有人知道如何让它工作吗?

【问题讨论】:

    标签: azure azure-data-factory azure-adf


    【解决方案1】:

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

    【讨论】:

    • 是的,您的解决方案是对的。首先,我不确定是否要在所有引用部分中操作密钥库的秘密名称。如果我必须更正 10-15 个引用及其动态内容,它只会使更改更加耗时。但它实际上是让我的脚本在不同环境之间工作的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 2021-07-24
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多