BACKUP CERTIFICATE (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是并行数据仓库

将证书导出到文件中。

链接图标 Transact-SQL 语法约定

语法

-- Syntax for SQL Server  
  
BACKUP CERTIFICATE certname TO FILE = 'path_to_file'  
    [ WITH PRIVATE KEY   
      (   
        FILE = 'path_to_private_key_file' ,  
        ENCRYPTION BY PASSWORD = 'encryption_password'   
        [ , DECRYPTION BY PASSWORD = 'decryption_password' ]   
      )   
    ]  
-- Syntax for Parallel Data Warehouse  
  
BACKUP CERTIFICATE certname TO FILE ='path_to_file'  
      WITH PRIVATE KEY   
      (   
        FILE ='path_to_private_key_file',  
        ENCRYPTION BY PASSWORD ='encryption_password'   
      )   

备注

若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

certname
要备份的证书的名称。

TO FILE = path_to_file
指定要保存证书的文件的完整路径(包括文件名)。 此路径可以是本地路径,也可以是网络位置的 UNC 路径。 如果仅指定了文件名,则该文件将保存在实例的默认用户数据文件夹中(可能是也可能不是 SQL Server DATA 文件夹)。 对于 SQL Server Express LocalDB,实例的默认用户数据文件夹是 %USERPROFILE% 环境变量为创建实例的帐户指定的路径。

WITH PRIVATE KEY 指定将证书的私钥保存到文件中。 此子句为可选项。

FILE = path_to_private_key_file
指定要保存私钥的文件的完整路径(包括文件名)。 此路径可以是本地路径,也可以是网络位置的 UNC 路径。 如果仅指定了文件名,则该文件将保存在实例的默认用户数据文件夹中(可能是也可能不是 SQL Server DATA 文件夹)。 对于 SQL Server Express LocalDB,实例的默认用户数据文件夹是 %USERPROFILE% 环境变量为创建实例的帐户指定的路径。

ENCRYPTION BY PASSWORD = encryption_password
用于在将密钥写入备份文件之前对私钥进行加密的密码。 该密码需要进行复杂性检查。

DECRYPTION BY PASSWORD = decryption_password
用于在备份密钥之前对私钥进行解密的密码。 如果证书是用主密钥加密,便无需使用此参数。

备注

如果在数据库中使用密码对私钥进行加密,则必须指定解密密码。

将私钥备份到文件时,需要进行加密。 用于保护文件中私钥的密码和用于加密数据库中证书私钥的密码不是同一个密码。

私钥以 PVK 文件格式保存。

若要使用或不使用私钥还原备份证书,请使用 CREATE CERTIFICATE 语句。

若要将私钥还原到数据库中的现有证书,请使用 ALTER CERTIFICATE 语句。

在你执行备份后,这些文件就会通过 ACL 备份到 SQL Server 实例的服务帐户。 如果需要将证书还原到在不同帐户下运行的服务器,必须将文件权限调整为文件可供新帐户读取。

权限

要求对证书具有 CONTROL 权限,并且了解用于对私钥进行加密的密码的相关信息。 如果你只备份证书的公共部分,此命令必须拥有对证书的某种权限,并且调用方对证书的 VIEW 权限尚未遭拒绝。

示例

A. 将证书导出到文件中

以下示例将证书导出到文件中。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert';  
GO  

B. 导出证书和私钥

在以下示例中,已备份的证书的私钥将使用密码 997jkhUbhk$w4ez0876hKHJH5gh 进行加密。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert'  
    WITH PRIVATE KEY ( FILE = 'c:\storedkeys\sales05key' ,   
    ENCRYPTION BY PASSWORD = '997jkhUbhk$w4ez0876hKHJH5gh' );  
GO  

C. 导出具有加密私钥的证书

在以下示例中,证书的私钥在数据库中进行加密。 必须使用密码 9875t6#6rfid7vble7r 对私钥进行解密。 将证书存储到备份文件中时,私钥将使用密码 9n34khUbhk$w4ecJH5gh 进行加密。

BACKUP CERTIFICATE sales09 TO FILE = 'c:\storedcerts\sales09cert'   
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = '9875t6#6rfid7vble7r' ,  
    FILE = 'c:\storedkeys\sales09key' ,   
    ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh' );  
GO  

另请参阅

CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)