SSIS作业执行失败:连接错误与只读数据库问题排查
问题分析与解决方案
报错信息(已翻译)
源验证失败,返回错误0xC020801C
SSIS错误代码DTS_E_CONNATACQUIRECONNECTIONFROMCONNECTIONMANAGER. 对连接管理器"source excel"调用AcquireConnection方法失败,错误代码0xC0202009。此前可能有更多错误信息说明失败原因。
SSIS错误代码DTS_E_OLEDBERROR. STG_DIM 发生OLE DB错误,错误代码:0x80004005。存在OLE DB记录,来源:"Microsoft Access Database Engine",Hresult: 0x80004005,描述:无法更新。数据库或对象为只读。
核心原因
直接从Integration Server目录执行包时,使用的是当前登录用户的Windows权限;而SQL Server Agent作业执行时,使用的是SQL Server Agent服务账户的权限,两者权限不一致导致无法正常访问Excel文件。
解决步骤
检查Agent服务账户权限
- 打开
services.msc,找到SQL Server Agent服务,查看其登录账户。 - 给该账户配置Excel文件所在远程目录的读取权限(若包需要修改文件如移动、重命名,需额外添加写入权限)。
- 若Agent使用Network Service账户,需给机器账户(格式:
域名\机器名$)配置对应目录权限。
- 打开
取消文件/目录只读属性
- 右键目标Excel文件→属性,取消“只读”选项的勾选。
- 检查文件所在目录的权限设置,确保Agent账户未被限制为只读访问。
配置作业步骤的代理账户
- 在SQL Server代理中新建代理:关联拥有Excel文件访问权限的Windows凭据。
- 编辑作业步骤,在“运行身份”下拉菜单中选择新建的代理账户,让作业以有权限的账户执行。
匹配驱动运行位数
若SSIS包是基于32位Access Database Engine开发的,在作业步骤的高级选项里勾选“使用32位运行时”,保证运行环境与驱动位数一致。
内容的提问来源于stack exchange,提问作者C-El
相关产品推荐
相关产品推荐

