–用于加密数据库中的新证书和非对称密钥,更进一步保护已加密的数据。
IF NOT EXISTS ( SELECT name
FROM sys.databases
WHERE name = ‘BookStore’ )
BEGIN
CREATE DATABASE BookStore
END
GO
USE BookStore
GO
–创建数据库主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘password’
go
USE BookStore
GO
–重新生成数据库主密钥
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD =’password’
–删除数据库主密钥
USE BookStore
GO
DROP MASTER KEY
–注意:如果该数据库主密钥仍然被其他数据库对象使用,则不能被删除,这点与架构类似。
—
–同时一旦创建数据库主密钥,就立刻备份它是一个好的习惯。
–备份数据库主密钥
USE BookStore
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘MagneticFields!’
GO
BACKUP MASTER KEY TO FILE=’D:BookStore_Master_Key.BAK’
ENCRYPTION BY PASSWORD =’4D280837!!!’
–恢复数据库主密钥
RESTORE MASTER KEY FROM FILE=’D:BookStore_Master_Key.BAK’
DECRYPTION BY PASSWORD =’4D280837!!!’
ENCRYPTION BY PASSWORD =’MagneticFields!’
–与服务主密钥类似,如果没有修改,则会收到如下提示:
–The old and new master keys are identical. No data re-encryption is required.
–示例三、从数据库主密钥删除服务主密钥
—
–当一个数据库主密钥被创建时,它被默认使用两种方式加密:
–服务主密钥和被使用CREATE MASTER KEY 命令中使用的密码。
–如果你不想使用服务主密码加密数据库主密钥
–(这种情况下,拥有sysadmin特权的login在不知道数据库主密钥的前提下将不能访问加密数据),
–你可以使用ALTER MASTER KEY 命令删除服务主密钥。
—
–简略语法如下:
ALTER MASTER KEY
ADD ENCRYPTION BY SERVICE MASTER KEY |
DROP ENCRYPTION BY SERVICE MASTER KEY
–由于服务主密钥允许拥有足够许可(如sysadmin)的用户自动使用数据库主密钥解密,
–因此,一旦删除了服务主密钥的加密,而再想修改数据库主密钥时,你必须使用一个新的命令访问它。
–OPEN MASTER KEY, 语法如下:
OPEN MASTER KEY DECRYPTION BY PASSWORD = ‘password’
–下面是一个例子:
ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY










