参数化 Azure 数据工厂中的链接服务Parameterize linked services in Azure Data Factory

适用于: Azure 数据工厂 Azure Synapse Analytics

现在可以参数化链接服务并在运行时传递动态值。You can now parameterize a linked service and pass dynamic values at run time. 例如,如果要连接到同一逻辑 SQL Server 上的不同数据库,则现在可以在链接服务定义中参数化数据库名称。For example, if you want to connect to different databases on the same logical SQL server, you can now parameterize the database name in the linked service definition. 这样就不需为逻辑 SQL Server 上的每个数据库创建链接服务。This prevents you from having to create a linked service for each database on the logical SQL server. 也可以参数化链接服务定义中的其他属性 - 例如,用户名。You can parameterize other properties in the linked service definition as well - for example, User name.

可以使用 Azure 门户中的数据工厂 UI 或编程接口来参数化链接服务。You can use the Data Factory UI in the Azure portal or a programming interface to parameterize linked services.

提示

我们建议不要参数化密码或机密。We recommend not to parameterize passwords or secrets. 而应将所有连接字符串都存储在 Azure Key Vault 中,并参数化 机密名称Store all connection strings in Azure Key Vault instead, and parameterize the Secret Name.

备注

存在导致在参数名中使用“-”的待解决的 bug,在该 bug 被解决之前,建议使用不带“-”的名称。There is open bug to use "-" in parameter names, we recommend to use names without "-" until the bug is resolved.

支持的链接服务类型Supported linked service types

可以将任何类型的链接服务参数化。You can parameterize any type of linked service. 在 UI 上创作链接服务时,数据工厂会为以下类型的链接服务提供内置参数化体验。When authoring linked service on UI, Data Factory provides built-in parameterization experience for the following types of linked services. 在“链接服务创建/编辑”边栏选项卡中,可以找到新参数的选项并添加动态内容。In linked service creation/edit blade, you can find options to new parameters and add dynamic content.

  • Amazon RedshiftAmazon Redshift
  • Amazon S3Amazon S3
  • Azure Blob 存储Azure Blob Storage
  • Azure Cosmos DB (SQL API)Azure Cosmos DB (SQL API)
  • Azure Data Lake Storage Gen2Azure Data Lake Storage Gen2
  • Azure Database for MySQLAzure Database for MySQL
  • Azure DatabricksAzure Databricks
  • Azure Key VaultAzure Key Vault
  • Azure SQL 数据库Azure SQL Database
  • Azure SQL 托管实例Azure SQL Managed Instance
  • Azure Synapse AnalyticsAzure Synapse Analytics
  • Azure 表存储Azure Table Storage
  • 泛型 HTTPGeneric HTTP
  • 泛型 RESTGeneric REST
  • MySQLMySQL
  • OracleOracle
  • SQL ServerSQL Server

对于不在上述列表中的其他链接服务类型,可以通过在 UI 上编辑 JSON 来参数化该链接服务:For other linked service types that are not in above list, you can parameterize the linked service by editing the JSON on UI:

  • 在“链接服务创建/编辑”边栏选项卡中 -> 展开底部的“高级”-> 选中“以 JSON 格式指定动态内容”复选框 -> 指定链接服务 JSON 有效负载。In linked service creation/edit blade -> expand "Advanced" at the bottom -> check "Specify dynamic contents in JSON format" checkbox -> specify the linked service JSON payload.
  • 或者,在创建没有参数化的链接服务后,转到管理中心 ->“链接服务”-> 查找特定的链接服务 -> 单击“代码”(“{}”按钮)以编辑 JSON。Or, after you create a linked service without parameterization, in Management hub -> Linked services -> find the specific linked service -> click "Code" (button "{}") to edit the JSON.

请参考 JSON 示例来添加 parameters 节,以定义参数并使用 @{linkedService().paraName} 来引用参数。Refer to the JSON sample to add parameters section to define parameters and reference the parameter using @{linkedService().paraName}.

数据工厂 UIData Factory UI

将动态内容添加到“链接服务”定义

新建参数

JSONJSON

{
    "name": "AzureSqlDatabase",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Server=tcp:myserver.database.chinacloudapi.cn,1433;Database=@{linkedService().DBName};User ID=user;Password=fake;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": null,
        "parameters": {
            "DBName": {
                "type": "String"
            }
        }
    }
}