sql-server - 在多台服务器上创建 SQL Server 证书
问题描述
我在 SQL Server 上创建了一个证书,用于加密我的数据库备份。我使用以下文章获取说明。
我需要将此数据库还原到多台服务器。我可以使用以下代码在另一台服务器上导入/创建证书。
-- Copy Certificate to target then create
CREATE CERTIFICATE myCertificate
FROM FILE = 'C:\Temp\CertBackup.cer'
WITH PRIVATE KEY (FILE = 'C:\Temp\CertBackup.pvk',
DECRYPTION BY PASSWORD = 'myPassword');
GO
我希望能够一次将此证书导入多台服务器,而不是在每台服务器上运行此命令。我应该使用 Powershell 编写脚本还是有更好的方法?
解决方案
DECLARE @password VARCHAR(40) = 'f00bar!23'
select name, 'create certificate ' + QUOTENAME(name) + ' from binary = '
+ CONVERT(VARCHAR(MAX), CERTENCODED(CERT_ID(name)), 1)
+ ' with private key ( binary = '
+ CONVERT(VARCHAR(MAX), CERTPRIVATEKEY(CERT_ID(name), @password), 1)
+ ', decryption by password = ''' + @password + ''')'
FROM sys.[certificates] AS [c]
WHERE name = '«cert name here»';
运行它,它将生成一个 T-SQL 语句,允许您创建证书而无需使用证书备份。以上假设证书的私钥受数据库主密钥保护。如果它受密码保护,则必须相应地修改代码(留给读者练习)。
注意:@password
仅用于保护传输中的证书。也就是说,它不是证书本身的密码。
推荐阅读
- c# - 在 C#.net 中,如何在打印时获取行中的文本?
- swift - 在 Swift 中以编程方式发送 SMS/iMessage
- vba - 如何从 MS Access VBA 中的自定义查询之一读取值?
- keycloak - 切换到 Keycloak 后,主体名称显示不同
- c++ - C ++:如果用户输入数字将其转换为单词并且如果按Enter键程序应该退出,则使用切换案例
- javascript - HTML复选框onclick在IE11中不起作用
- sql - 在 Oracle 中使用字符串值,如数值
- vuejs2 - 如何将 nprogress 与 vuejs 代码拆分一起使用?
- ios - 上传到应用商店的问题
- ios - 快速将字符串(包含 json 字符串)转换为 NSURL