使用托管专用端点创建Azure SQL链接服务失败
问题诊断与解决方案
一、门户链接服务数据库下拉加载失败的排查步骤
- 确认托管专用端点状态:检查ADF中指向Azure SQL服务器的托管专用端点是否处于已批准状态,且端点类型为
sqlServer(而非数据库级端点)。 - 补全托管标识权限:ADF系统托管标识不仅需要数据库用户,还需服务器级权限才能读取数据库列表,执行以下SQL语句授权:
-- 服务器级授权(推荐,可读取所有数据库列表) GRANT CONNECT ANY DATABASE TO [ADF系统托管标识名称]; GRANT VIEW ANY DATABASE TO [ADF系统托管标识名称]; -- 若仅需访问特定数据库,执行库级授权 USE [目标数据库名]; CREATE USER [ADF系统托管标识名称] FROM EXTERNAL PROVIDER; GRANT CONNECT TO [ADF系统托管标识名称]; - 排查网络规则:确认ADF所在VNet与SQL服务器专用端点所在VNet之间的NSG规则未阻挡1433端口的双向流量,同时确保SQL服务器的公网访问已彻底禁用。
- 清除门户缓存:使用私有浏览器窗口重新操作,避免门户缓存导致的加载异常。
二、Bicep创建链接服务时启用专用端点的正确配置
要让链接服务强制使用专用端点,需在Bicep代码中明确指定privateEndpointConnections配置,同时搭配托管VNet集成运行时(或自托管集成运行时)。示例代码:
resource adfSqlLinkedService 'Microsoft.DataFactory/factories/linkedservices@2018-06-01' = { name: 'AzureSqlDbLinkedService' parent: adfFactoryResource // 替换为你的ADF实例资源引用 properties: { type: 'AzureSqlDatabase' typeProperties: { connectionString: 'Server=tcp:<sql-server-name>.database.windows.net,1433;Database=<target-db-name>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;' } connectVia: { referenceName: 'ManagedVNetIntegrationRuntime' // 必须使用托管VNet或自托管IR type: 'IntegrationRuntimeReference' } privateEndpointConnections: [ { referenceName: '/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.DataFactory/factories/<adf-name>/managedPrivateEndpoints/<private-endpoint-name>' type: 'ManagedPrivateEndpointReference' } ] } }
关键注意事项:
- 不能使用默认的Azure集成运行时,必须选择托管VNet集成运行时或自托管集成运行时,否则会走公网路由。
privateEndpointConnections中的referenceName必须是ADF中已获批的托管专用端点完整资源ID。- 连接字符串无需包含身份验证信息,系统托管标识会自动完成身份校验。
三、配置验证
创建链接服务后,在ADF门户的链接服务详情页,切换到「连接」标签,确认「使用专用端点」已勾选,然后执行测试连接:
- 若测试提示无法连接,检查专用端点状态和VNet路由规则。
- 若提示权限不足,重新核对托管标识的数据库/服务器级权限。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

