Elastic Job执行sp_add_jobstep提示凭据不存在或无权限
解决Azure Elastic Jobs Agent添加作业步骤时的凭据错误
可能的原因及排查步骤:
1. 确认凭据存在于代理主机数据库
Elastic Jobs的凭据必须创建在托管Agent的数据库(即你所说的代理主机DB)中,而非目标数据库。执行以下查询验证:
SELECT name FROM sys.credentials WHERE name = N'agentjobuser'
如果查询无结果,说明凭据未正确创建在代理主机DB中,需要重新在该DB内创建凭据:
CREATE CREDENTIAL [agentjobuser] WITH IDENTITY = N'agentjobuser', SECRET = N'登录密码';
2. 验证凭据对应登录名的权限
- 目标数据库权限:确保凭据关联的SQL登录名在所有目标数据库中拥有执行查询的权限,比如针对测试表的SELECT权限:
-- 在目标数据库执行 CREATE USER [agentjobuser] FOR LOGIN [agentjobuser]; GRANT SELECT ON [table] TO [agentjobuser]; - 代理主机DB权限:即使使用服务器管理员登录,也需确认对该凭据拥有访问权限,执行查询验证:
SELECT HAS_PERMS_BY_NAME(N'agentjobuser', 'CREDENTIAL', 'ALTER')
返回1代表有权限,0则需要授予对应权限。
3. 检查Elastic Jobs Agent与数据库的关联
确认Elastic Jobs Agent已正确关联到你的代理主机数据库(而非其他DB)。可在Azure门户的Elastic Jobs Agent页面查看关联的数据库信息,若关联错误需重新绑定。
4. 确保数据库主密钥可用
虽然你提到主密钥已存在,但需验证其处于可用状态:
SELECT name, is_open FROM sys.symmetric_keys WHERE name = N'##MS_DatabaseMasterKey##'
若is_open值为0,需执行以下语句打开主密钥:
OPEN MASTER KEY DECRYPTION BY PASSWORD = '你的主密钥创建密码';
内容的提问来源于stack exchange,提问作者kontrago
相关产品推荐
相关产品推荐

