ALTER SERVICE MASTER KEY (Transact-SQL)
更改 SQL Server 实例的服务主密钥。
语法
ALTER SERVICE MASTER KEY
[ { <regenerate_option> | <recover_option> } ] [;]
<regenerate_option> ::=
[ FORCE ] REGENERATE
<recover_option> ::=
{ WITH OLD_ACCOUNT = 'account_name' , OLD_PASSWORD = 'password' }
|
{ WITH NEW_ACCOUNT = 'account_name' , NEW_PASSWORD = 'password' }
参数
FORCE
指示即使存在数据丢失的风险,也应当重新生成服务主密钥。有关详细信息,请参阅本主题下文中的更改 SQL Server 服务帐户。REGENERATE
指示应当重新生成服务主密钥。OLD_ACCOUNT ='account_name'
指定旧的 Windows 服务帐户的名称。OLD_PASSWORD ='password'
指定旧的 Windows 服务帐户的密码。NEW_ACCOUNT ='account_name'
指定新的 Windows 服务帐户的名称。NEW_PASSWORD ='password'
指定新的 Windows 服务帐户的密码。
注释
当第一次需要使用服务主密钥对链接服务器密码、凭据或数据库主密钥进行加密时,便会自动生成服务主密钥。使用本地计算机密钥和 Windows 数据保护 API 对服务主密钥进行加密。该 API 使用从 SQL Server 服务帐户的 Windows 凭据中派生出来的密钥。
服务主密钥只能由创建它时所用的服务帐户进行解密,或者由可以访问该服务帐户的 Windows 凭据的主体进行解密。因此,如果您更改了运行 SQL Server 服务所用的 Windows 帐户,则还必须使新帐户能够对服务主密钥进行解密。
更改 SQL Server 服务帐户
若要更改 SQL Server 服务帐户,请使用 SQL Server 配置管理器。为了对服务帐户的变更进行管理,SQL Server 将存储服务主密钥的冗余副本,该密钥由具有授予 SQL Server 服务组的必要权限的计算机帐户对其加以保护。在重建计算机时,将可以为该服务帐户以前使用的同一域用户恢复服务主密钥。这不适用于本地帐户、Local System、Local Service 或 Network Service 帐户。如果要将 SQL Server 迁移至另一台计算机,请使用备份和还原功能迁移服务主密钥。
REGENERATE 短语可以重新生成服务主密钥。当重新生成服务主密钥时,SQL Server 会对所有使用该主密钥加密的密钥进行解密,然后使用新的服务主密钥对这些密钥进行加密。这是一种消耗大量资源的操作。在不危及密钥安全性的前提下,应当将该操作安排在资源需求较低的时段执行。如果有任意一种解密操作失败,则整个语句将会失败。
即使密钥重新生成过程无法检索当前的主密钥,或者无法对所有使用该主密钥加密的私钥进行解密,使用 FORCE 选项也可以使得密钥重新生成过程继续进行。只有在重新生成过程失败,并且您无法使用 RESTORE SERVICE MASTER KEY 语句还原服务主密钥时,才使用 FORCE 选项。
注意 |
---|
服务主密钥为 SQL Server 加密层次结构的根。服务主密钥直接或间接地保护树中的所有其他密钥和机密内容。如果在强制的重新生成过程中不能对某个相关密钥进行解密,则由该密钥所保护的数据便会丢失。 |
通过 MACHINE KEY 选项,可以使用计算机密钥添加或删除加密。
权限
需要对服务器具有 CONTROL SERVER 权限。
示例
下面的示例重新生成服务主密钥。
ALTER SERVICE MASTER KEY REGENERATE;
GO
更改历史记录
更新的内容 |
---|
在“语法”部分中删除了错误的 ENCRYPTION BY MACHINE 文本。 |