如何将SharePoint Excel文件连接至SSIS Excel数据源并解决403报错?
403 Forbidden错误排查
- 检查认证模式:当前SharePoint(尤其是SharePoint Online)已默认禁用基本认证,你在HTTP连接管理器如果直接填用户名密码且选了基本认证,必然触发403。本地部署的SharePoint需把认证方式切换为「NTLM认证」,SharePoint Online需改用OAuth2认证或应用密码。
- 核对文件权限:确认你使用的账号对目标xls文件所在的SharePoint文档库有至少读取权限,建议直接进入对应文件的共享设置页单独核对账号权限,不要仅校验站点全局权限。
- 补充请求头参数:在HTTP任务的请求头中添加
X-FORMS_BASED_AUTH_ACCEPTED: f,可规避SharePoint表单认证跳转导致的403错误。
可行的连接方案
方案1:脚本任务直接下载(无需第三方组件)
无需额外安装组件,用C#脚本直接实现文件下载,是兼容性最高的方案:
- 新建SSIS「脚本任务」,开发语言选择C#
- 填入核心下载逻辑,示例代码如下:
using System.Net; using System.Security; // 本地部署SharePoint用这套凭据 using (WebClient client = new WebClient()) { client.Credentials = new NetworkCredential("你的用户名", "你的密码", "域名"); client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); client.DownloadFile("SharePoint文件的直链地址", @"本地临时存储路径\目标文件.xls"); } // SharePoint Online用这套凭据 /* using (WebClient client = new WebClient()) { SecureString securePassword = new SecureString(); foreach (char c in "你的账号密码".ToCharArray()) securePassword.AppendChar(c); client.Credentials = new SharePointOnlineCredentials("你的账号@xxx.onmicrosoft.com", securePassword); client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); client.DownloadFile("SharePoint文件的直链地址", @"本地临时存储路径\目标文件.xls"); } */
- 文件下载到本地后,用常规的Excel连接管理器接入本地xls文件即可做后续数据处理。
方案2:OData连接管理器适配
SSIS 2016及以上版本自带OData连接管理器,可直接对接SharePoint数据源:
- 新建OData连接管理器,服务地址填写
https://你的SharePoint站点地址/_vti_bin/listdata.svc - 按照你的SharePoint版本选择对应认证方式,本地部署选Windows认证,SharePoint Online选OAuth2认证
- 连接成功后直接选择目标文档库,筛选出你需要的xls文件后下载处理即可。
方案3:内置SharePoint列表适配器
SSIS 2019及以上版本自带SharePoint列表源组件,直接配置站点地址、对应认证信息后,就可以读取文档库中的文件属性,搭配文件系统任务下载对应xls文件即可。
内容的提问来源于stack exchange,提问作者Reni
相关产品推荐
相关产品推荐

