You need to enable JavaScript to run this app. SQL Server 2014代理备份作业报找不到加密证书的错误
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2014代理备份作业报找不到加密证书的错误

SQL Server 2014 加密备份Agent作业报15151错误的解决方法

错误15151的本质并非证书实际不存在,绝大多数场景下是当前执行主体对证书的访问权限不满足要求,SQL Server会统一返回“证书不存在或无对应权限”的提示。
手动调用USP可正常执行,是因为手动执行时使用的账号(通常为sysadmin高权限账号)天然具备证书访问权限;当切换为SQL Server Agent作业运行的myuser身份时,因权限配置不达标就会触发报错。此前仅授予VIEW DEFINITION权限的操作,存在作用域错配、权限等级不足的问题,无法解决故障。

步骤1:校验证书的正确存储位置

服务器级加密备份通过SERVER CERTIFICATE子句引用的证书,必须存储在master数据库中。如果当初创建证书的会话未切换到master库执行,证书会被存到当前连接的业务库,导致备份操作无法检索到目标证书。
执行以下语句核对证书位置:

USE master;
SELECT 
  c.name AS cert_name,
  DB_NAME(c.database_id) AS cert_storage_db
FROM sys.certificates c
WHERE c.name = 'dbMasterEncryptionCert';
  • 如果返回的存储库不是master:需要将该证书(连同关联私钥)通过BACKUP CERTIFICATE导出,再重新在master库中创建,否则后续所有权限配置都无法生效。

步骤2:在正确的库上下文完成权限授权

此前执行的授权语句存在两个核心问题:

  1. 作用域错配:如果执行授权的会话不是在master库上下文,GRANT ... ON CERTIFICATE::dbMasterEncryptionCert实际是对当前所在库的同名证书做授权,对master库中存储的目标证书完全无效。
  2. 权限不足:仅授予VIEW DEFINITION仅能让myuser看到证书元数据,没有访问证书私钥的权限,完全无法满足加密备份的操作要求。

正确的授权操作必须切换到master库上下文执行,给myuser授予证书的CONTROL权限(可正常访问证书关联的私钥):

USE master;
-- 移除之前无效的低权限授权
REVOKE VIEW DEFINITION ON CERTIFICATE::dbMasterEncryptionCert TO [myuser];
-- 授予满足备份操作要求的证书操作权限
GRANT CONTROL ON CERTIFICATE::dbMasterEncryptionCert TO [myuser];

步骤3:核对Agent作业的运行身份配置

打开对应SQL Server Agent作业的报错步骤配置页,确认两个核心配置:

  • 步骤的“运行身份”栏指定的代理账号确实为myuser,避免出现“给myuser完成了授权,但作业实际用Agent服务账号身份运行”的权限错配。
  • myuser对应的SQL登录名,在master、业务库cpg中都存在合法的用户映射,没有断开连接的情况。

步骤4:验证证书私钥的解密通路

如果完成上述操作仍报错,需要确认master库主密钥的解密链路正常:

  1. 检查master库主密钥是否被SQL Server服务主密钥(SMK)自动加密,执行以下语句校验:
    USE master;
    SELECT 
      name,
      is_master_key_encrypted_by_server
    FROM sys.databases 
    WHERE name = 'master';
    
    如果返回is_master_key_encrypted_by_server = 0,执行以下语句绑定加密关系:
    OPEN MASTER KEY DECRYPTION BY PASSWORD = '创建主密钥时设置的原密码';
    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
    CLOSE MASTER KEY;
    
  2. 以myuser身份重新登录SSMS,手动执行一次加密备份语句测试通路:
    BACKUP DATABASE cpg
      TO DISK = 'C:\Test\test_enc_backup.bak'
      WITH COMPRESSION,
      ENCRYPTION(ALGORITHM = AES_256, SERVER CERTIFICATE = dbMasterEncryptionCert);
    
    测试执行通过后,再触发SQL Server Agent作业即可正常运行。

内容的提问来源于stack exchange,提问作者AllData

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 10:24:03