使用SQL脚本运行SSIS包时出现Access Denied错误求助
你遇到的这个错误(0xC00160AE),本质是执行作业的SQL Server Agent账户(NT Service\SQLSERVERAGENT)无法连接到目标服务器的Integration Services(SSIS)服务,或者包本身的配置、权限存在问题。结合你给出的错误信息,我整理了一步步的排查和解决方法:
先确认SSIS服务是否正常运行
打开目标服务器的服务管理器(运行services.msc),找到SQL Server Integration Services服务,检查它是否处于「正在运行」状态。如果没启动,手动启动它,同时把启动类型设为「自动」,避免服务器重启后服务停掉。给Agent账户配置SSIS服务权限
NT Service\SQLSERVERAGENT这个内置账户需要具备访问SSIS服务的权限,操作步骤如下:- 打开SQL Server Management Studio(SSMS),在「服务器类型」里选择Integration Services,连接到目标服务器。
- 右键点击服务器名称,选择「属性」,切换到「权限」标签页。
- 添加NT Service\SQLSERVERAGENT账户,至少赋予它「读取」和「执行」权限(如果需要管理包,可按需添加更高权限)。
- 保存设置后,重启SQL Server Agent服务让权限生效。
验证包的路径和存在性
错误里指定的包路径是\MSDB\TestPac,请确认这个包确实存在于MSDB的SSIS包存储中:在SSMS的Integration Services节点下,展开「存储的包」→「MSDB」,检查是否有TestPac这个包,路径要完全匹配(注意部分环境下大小写可能敏感)。检查64位运行时兼容性
你的Execute Package Utility是64位版本(Version 12.0.5000.0 for 64-bit),如果SSIS包依赖了32位组件(比如旧版Excel驱动、32位OLE DB provider等),会导致加载失败。这种情况下,需要在SQL Agent作业的步骤设置里,勾选「使用32位运行时」选项(在作业步骤的「配置」标签页中)。确认服务器名称的准确性
错误信息里的「Server Name」要确保是正确的目标服务器名称,如果是本地执行,也可以尝试用localhost代替。如果是远程服务器,还要检查网络连通性,确保防火墙没有阻止SSIS服务的端口(默认是135端口+动态端口,或者你配置的固定端口)。获取完整错误日志定位问题
你提供的错误信息被截断了,建议查看SQL Server Agent的作业历史日志:在SSMS里展开「SQL Server Agent」→「作业」,找到对应的作业,右键选择「查看历史记录」,找到失败的步骤,查看完整的错误详情,这能帮你更精准地定位问题。
内容的提问来源于stack exchange,提问作者dhanuj cherian

