You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地SSIS(非ADF导入)中用Service Principal或托管身份连接Azure SQL数据库

问题分析与解决步骤

可能的操作失误

  • 你直接用SP名称+密码以SQL Server认证方式连接,这是错误的。Service Principal属于Azure AD身份,必须使用Azure AD专属的认证模式,而非常规SQL账号认证。
  • 可能使用的数据库驱动版本过低,不支持Azure AD服务主体认证。

用Service Principal连接Azure SQL的SSIS配置步骤

1. 确认驱动版本

必须安装ODBC Driver 17 for SQL Server及以上版本,或OLE DB Driver 18 for SQL Server,这两类驱动原生支持Azure AD服务主体认证。

2. 配置SSIS连接管理器

方式一:ODBC连接管理器

  • 新建ODBC连接管理器,选择ODBC Driver 17 for SQL Server作为驱动
  • 在配置窗口填写以下信息:
    • 服务器名称:你的Azure SQL服务器名.database.windows.net
    • 认证类型:选择Azure Active Directory - Service Principal
    • 服务主体ID:输入SP的应用程序ID(不是SP的显示名称)
    • 服务主体密钥:输入创建SP时生成的密钥(或Azure CLI生成的密码)
    • 租户ID:输入你的Azure租户ID
    • 数据库名称:选择目标Azure SQL数据库
    • 点击「测试连接」验证

方式二:ADO.NET连接管理器

  • 新建ADO.NET连接管理器,选择Microsoft.Data.SqlClient作为提供程序
  • 手动配置连接字符串(或通过连接字符串构建器生成):
    Server=tcp:你的Azure SQL服务器名.database.windows.net,1433;Authentication=Active Directory Service Principal;Database=你的数据库名;User Id=你的SP应用程序ID;Password=你的SP密钥;
    
  • 替换占位符后,点击测试连接

3. 验证数据库权限配置

确保已在Azure SQL数据库中正确创建SP对应的外部用户并授权:

  • 用拥有数据库权限的Azure AD账号登录数据库,执行以下SQL:
    CREATE USER [你的SP显示名称] FROM EXTERNAL PROVIDER;
    -- 赋予读写权限,按需调整角色
    ALTER ROLE db_datareader ADD MEMBER [你的SP显示名称];
    ALTER ROLE db_datawriter ADD MEMBER [你的SP显示名称];
    
    注:也可以用SP的应用程序ID替代显示名称创建用户。

关于托管身份的说明

本地运行的SSIS包无法直接使用托管身份(托管身份是Azure资源专属身份,本地环境没有对应的身份上下文),因此只能通过Service Principal方式实现无交互连接。

内容的提问来源于stack exchange,提问作者Ian Carrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:23:27