如何将本地ODBC用户DSN发布至Azure Data Factory?
解决Azure Data Factory中SSIS包ODBC服务主体认证连接失败问题
核心问题原因
本地创建的用户DSN仅对当前登录用户可见,而Azure Data Factory(ADF)运行SSIS包时使用的是服务账户或集成运行时(IR)的系统账户,无法读取你本地的用户DSN配置,因此出现"数据源名称未找到且未指定默认驱动"的报错。
具体解决步骤
替换用户DSN为系统DSN或无DSN连接字符串
- 系统DSN:在本地ODBC数据源管理器中选择"系统DSN"标签页创建数据源,这样机器上所有账户(包括ADF IR的服务账户)都能访问该配置。创建时选择对应版本的ODBC驱动(如ODBC Driver 17 for SQL Server),认证方式选
ActiveDirectoryServicePrincipal,输入服务主体的客户端ID和密钥,测试连接通过后再发布SSIS项目。 - 无DSN连接字符串:直接在SSIS连接管理器中使用完整的连接字符串,无需依赖DSN配置,示例格式:
Driver={ODBC Driver 17 for SQL Server};Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Database=<目标数据库名>;Authentication=ActiveDirectoryServicePrincipal;UID=<服务主体客户端ID>;PWD=<服务主体密钥>
- 系统DSN:在本地ODBC数据源管理器中选择"系统DSN"标签页创建数据源,这样机器上所有账户(包括ADF IR的服务账户)都能访问该配置。创建时选择对应版本的ODBC驱动(如ODBC Driver 17 for SQL Server),认证方式选
匹配集成运行时的ODBC驱动版本
- 若使用自托管IR:需在IR所在的机器上安装与本地一致版本的ODBC驱动,确保驱动已正确注册到系统中。
- 若使用托管IR:确认托管IR支持的ODBC驱动版本(当前托管IR默认支持ODBC Driver 17 for SQL Server),连接配置需适配该版本。
发布时验证连接配置
发布SSIS项目到ADF的SSIS目录时,检查连接管理器的配置是否已更新为系统DSN或无DSN字符串,避免保留本地用户DSN的引用。自托管IR额外排查项
- 确保IR的服务账户拥有访问系统DSN的权限,且IR所在机器能正常连通Azure SQL Server的1433端口。可在IR机器上通过ODBC数据源管理器再次测试系统DSN的连接,确认服务主体能正常访问目标数据库。
内容的提问来源于stack exchange,提问作者Furkan Karacan
相关产品推荐
相关产品推荐

