- 在原 instance 上備份憑證
- 在新 instance 上的 master DB 上建立 master key
- 在新 instance 上匯入憑證
- 在新 instance 上還原 DB
加密過備份檔案還原完整 Script
-- Step1:在原 instance 上備份憑證
BACKUP CERTIFICATE AdventureWorksCert
TO FILE = 'C:\Temp\AdventureWorksCert'
WITH PRIVATE KEY
(
FILE = 'C:\Temp\AdventureWorksKey',
ENCRYPTION BY PASSWORD = 'P@ssW0rd' -- 指定憑證私鑰檔案的密碼
)
-- Step2: 在新 instance 上的 master DB 上建立 master key
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd_In_New_Instance';
-- Step3:在新 instance 上匯入憑證
CREATE CERTIFICATE AdventureWorksCert
FROM FILE = 'C:\Temp\AdventureWorksCert'
WITH PRIVATE KEY
(
FILE = 'C:\Temp\AdventureWorksKey',
DECRYPTION BY PASSWORD = 'P@ssW0rd' -- 使用憑證私鑰檔案的密碼
) ;
-- Step4:在新 instance 上還原 DB
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Temp\AdventureWorks2022.bak'
WITH REPLACE
Step1:在原 instance 上備份憑證
BACKUP CERTIFICATE 除了 ENCRYPTION BY PASSWORD 還有 DECRYPTION BY PASSWORD 參數,該憑證建立時是用 master key 的話,備份憑證時就不用指定該參數
此外備份時該憑證 private key 已經存在,不會直接覆蓋,會有下列錯誤訊息
無法寫入檔案 'C:\Temp\AdventureWorksKey'。請確認您具有寫入權限、檔案路徑有效且該檔案尚未存在。
Step2:在新 instance 上的 master DB 上建立 master key
在新 instance 建立 master key 的密碼,不用一定要跟舊 instance 一樣,已經存在 master key 的話可以省略該步驟
Step3:在新 instance 上匯入憑證
[匯入憑證時指定 DECRYPTION BY PASSWORD 的密碼] 一定要跟 [備份憑證時指定 ENCRYPTION BY PASSWORD 的密碼] 一樣,不一樣會出現下列錯誤訊息
私密金鑰密碼無效。
另外進行匯入憑證前,一定要建立 master key,雖然沒有用上它,要不然會有該錯誤訊息產生
執行此作業之前,請在資料庫中建立主要金鑰或在工作階段中開啟主要金鑰。
Step4:在新 instance 上還原 DB
沒有憑證情況下進行還原,會出現列錯誤訊息
找不到指模為 '0xAD763446520338DC5EC78D027B1201362048AEB6' 的伺服器 憑證。RESTORE DATABASE 正在異常結束。
- SQL Server Express 和 SQL Server Web 不支援備份期間加密。 但是可支援從加密的備份還原到 SQL Server Express 或 SQL Server Web 的執行個體。
- 舊版 SQL Server 無法讀取加密的備份。
沒有留言:
張貼留言