SSIS中OData Source组件无法连接问题求助
解决SSIS OData Source运行时验证与连接错误
针对你遇到的SSIS OData Source预览正常但运行包报错的问题,结合Power BI能正常加载的情况,大概率是旧版SSIS组件的TLS兼容性、身份验证配置或者运行时环境的问题,以下是具体的解决方案:
1. 强制SSIS运行时使用TLS 1.2
公共HTTPS站点现在普遍要求TLS 1.2及以上版本,但Visual Studio 2015自带的SSIS运行时可能默认使用旧版TLS协议,导致运行时无法建立安全连接(预览阶段可能用了Visual Studio本身的网络栈,所以能成功)。
操作步骤:
- 找到SSIS运行时的可执行文件路径,通常是:
C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\DTExec.exe(对应SQL Server 2016,切换到2017则是140目录) - 右键点击
DTExec.exe,选择属性 -> 兼容性 -> 勾选以管理员身份运行此程序 - 修改注册表强制启用TLS 1.2:
打开注册表编辑器,导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319,新建DWORD值,命名为SchUseStrongCrypto,值设为1
同样在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319下添加相同键值(适配32位运行时)
2. 修正OData连接管理器的身份验证设置
你提到使用了Windows身份验证,但该公共OData Feed不需要身份验证,错误的配置可能导致运行时连接获取失败:
- 打开OData Source Connection Manager的配置窗口
- 将身份验证模式从Windows身份验证改为匿名身份验证
- 保存配置后重新运行包
3. 检查并更新SSIS OData组件
Visual Studio 2015的SSIS OData组件对OData V4的支持可能存在兼容性问题,尝试更新组件:
- 打开Visual Studio 2015,进入工具 -> 扩展和更新
- 在联机搜索框中搜索"Microsoft OData Source for SQL Server Integration Services",安装最新可用的更新
- 重启Visual Studio后重新测试包
4. 尝试使用脚本组件替代OData Source
如果上述方法都无效,可以用C#脚本组件手动读取OData Feed,绕开原生组件的限制:
- 在数据流任务中添加一个脚本组件,选择作为源
- 在脚本编辑器中,引用
System.Data.Services.Client和System.Net命名空间 - 编写代码手动请求OData Feed并加载数据(示例框架):
using System.Data.Services.Client; using System.Net; public override void CreateNewOutputRows() { // 设置OData服务地址 var serviceUri = new Uri("https://data.medicaid.gov/api/odata/v4/a4y5-998d"); var context = new DataServiceContext(serviceUri); // 强制使用TLS 1.2 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // 获取数据并映射到输出列 foreach (var item in context.Execute<dynamic>(new Uri("a4y5-998d", UriKind.Relative))) { Output0Buffer.AddRow(); Output0Buffer.DrugName = item.Drug_Name; // 替换为实际列名 // 其他列同理映射 } }
- 配置脚本组件的输出列,匹配OData Feed的字段,再连接到Recordset Destination
补充说明
你切换到HTTP后出现的"基础连接已关闭"错误,是因为该站点可能强制跳转HTTPS,或者HTTP版本的OData Feed不可用,所以还是建议优先解决HTTPS的连接问题。
内容的提问来源于stack exchange,提问作者Leonard
相关产品推荐
相关产品推荐

