SQL Server 2014 SP2中SSIS包部署后执行权限报错如何解决?
解决SSIS部署后SQL代理作业权限报错问题
这个问题我之前碰过好多次,本质就是SQL Server 2014 SP2里的SSIS_Admin角色默认权限没覆盖到SSISDB内部的执行日志对象,导致代理账户跑作业时拿不到必要的执行信息。给你整理了一套排查和解决的步骤:
确认代理账户的权限继承与身份正确性
打开SSMS连接到你的SQL Server实例,找到安全性 > 代理 > 你的SSIS代理账户,右键查看属性:- 确认它关联的凭据是正确的Windows账户,且该账户确实是SSISDB数据库中SSIS_Admin角色的成员。
- 检查是否存在误加的拒绝权限(拒绝权限优先级高于角色权限),可以执行以下查询验证:
USE SSISDB; EXEC sp_helprotect @username = '你的代理账户名', @objname = 'internal.executions';
手动授予SELECT权限(最直接的解决方案)
SQL Server 2014 SP2的SSIS_Admin角色默认没有对internal.executions对象的SELECT权限,所以直接给角色或单独账户添加权限:USE SSISDB; -- 给SSIS_Admin角色授予权限,所有角色成员都会生效 GRANT SELECT ON internal.executions TO SSIS_Admin; -- 如果仅需给单个代理账户授权,替换为你的账户名 -- GRANT SELECT ON internal.executions TO [DOMAIN\你的代理账户];执行完成后重新运行SQL代理作业,大部分情况这就能解决问题。
检查SQL代理作业的执行配置
打开对应的SQL代理作业,找到SSIS包执行步骤:- 确认运行身份选择的是你配置的SSIS代理账户,而非SQL代理服务账户(服务账户通常没有SSISDB的权限)。
- 验证作业步骤中的SSIS包路径是否指向正确的SSISDB目录,避免因环境选错导致权限不匹配。
排查其他权限限制
如果以上步骤无效,再检查以下内容:- 查看SSISDB是否存在行级安全策略限制账户访问:
USE SSISDB; SELECT * FROM sys.security_policies; SELECT * FROM sys.security_predicates; - 确认代理账户对应的Windows账户拥有SQL Server实例的登录权限,且在SSISDB中的用户映射配置正确。
- 查看SSISDB是否存在行级安全策略限制账户访问:
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

