SQL Server作业执行报错‘EXECUTE AS LOGIN失败’,求解决方案
解决SQL Server作业
EXECUTE AS LOGIN失败的问题 针对你遇到的EXECUTE AS LOGIN' failed for the requested login 'SQLServerJobAdministrator'错误,可按以下步骤排查解决:
授予登录账户的模拟权限
SQL Server代理执行作业时需要模拟作业所有者的登录账户,因此要确保代理服务账户拥有对SQLServerJobAdministrator的模拟权限。执行以下SQL(替换SQLAgentServiceLogin为你的代理服务实际登录名):GRANT IMPERSONATE ON LOGIN::[SQLServerJobAdministrator] TO [SQLAgentServiceLogin];验证MSDB用户与登录的映射一致性
确认SQLServerJobAdministrator登录在MSDB库中的映射用户SID与服务器登录SID一致,否则会导致身份验证失败。执行SQL检查:USE msdb; SELECT name, sid FROM sys.database_principals WHERE name = 'SQLServerJobAdministrator'; SELECT name, sid FROM sys.server_principals WHERE name = 'SQLServerJobAdministrator';若SID不一致,删除并重建MSDB用户映射:
USE msdb; DROP USER IF EXISTS [SQLServerJobAdministrator]; CREATE USER [SQLServerJobAdministrator] FOR LOGIN [SQLServerJobAdministrator];补充作业管理必要权限
除已有的SQLAgent Operator、Reader、User权限,可将账户添加到SQLAgentOperatorRole(该角色包含作业执行、修改的核心权限):USE msdb; EXEC sp_addrolemember 'SQLAgentOperatorRole', 'SQLServerJobAdministrator';同时确保账户对作业步骤涉及的所有数据库对象(如存储过程、表)拥有
EXECUTE或对应操作权限。检查登录账户状态
在SSMS的「安全性-登录名」中查看SQLServerJobAdministrator的属性,确认账户未被禁用、密码未过期且状态正常。确认作业步骤执行上下文
若作业步骤设置了特定的“执行作为”账户,检查该账户权限是否足够;或尝试将步骤执行上下文改为「作业所有者」后重新测试。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

