每6天出现一次的SSIS-OData连接问题求助
核心排查与解决步骤
错误0xC020801F本质是连接管理器验证失败,结合“5天周期恢复”的特征,优先从以下方向处理:
1. 清除SSIS运行时的连接缓存
SQL Server 2016的SSIS在FCI集群环境下,会在节点本地缓存OData会话令牌,而SharePoint Online的刷新令牌默认有效期恰好为5天,缓存过期后无法自动刷新,重部署会重置缓存所以能恢复。
- 手动清理节点缓存:找到SSIS临时目录(默认路径
C:\Program Files\Microsoft SQL Server\130\DTS\Temp,130对应SQL2016版本),删除所有含OData关键字的临时文件 - 给定时作业加前置步骤:用批处理命令自动清除缓存,示例命令:
del /F /S /Q "C:\Program Files\Microsoft SQL Server\130\DTS\Temp\*OData*"
2. 调整FCI集群的节点会话绑定
如果FCI集群开启了SSIS服务的节点会话绑定,作业会固定在单个节点运行,缓存过期后无法切换节点获取新会话:
- 修改FCI资源配置,取消SSIS服务的节点会话绑定
- 配置作业每次运行时,强制在不同集群节点启动(多节点集群场景)
3. 切换OData连接的认证方式
改用Azure AD应用权限认证替代用户账号认证,避免用户会话过期影响:
- 在Azure AD注册应用,授予SharePoint的
Sites.Read.All权限 - 在SSIS的OData连接管理器中选择“Azure Active Directory应用程序”认证类型,填入应用ID、租户ID和客户端密钥
- 该方式的令牌有效期可配置更长,且不受用户会话限制
4. 更新SSIS的OData组件
SQL Server 2016自带的OData组件版本较老,对SPO的新认证机制支持不足:
- 安装对应SQL2016版本的最新SQL Server Integration Services Feature Pack,更新OData连接组件
- 确保集群所有节点安装相同版本的组件,避免版本不一致
5. 检查SharePoint Online的访问限制
SPO可能对同一IP/账号的访问设置了周期限制,5天后触发临时封禁:
- 登录SPO管理员中心,查看是否有对应服务器IP的访问告警
- 将服务器IP加入SPO的信任IP列表,解除访问限制
内容的提问来源于stack exchange,提问作者Sanya
相关产品推荐
相关产品推荐

