據已知的問題現象:凡是和加密相關的東西 都會涉及到 Sqlserver伺服器主要金鑰。因此 在涉及到“解密過程中出錯 15466”的問題。均可以通過重設伺服器主要金鑰解決。
注意:這是個運算密集型的操作!!!!可能會丟失加密資料!
文法
|
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 (DPAPI) 對服務主要金鑰進行加密。該 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
選項也可以使得密鑰重建過程繼續進行。只有在重建過程失敗,並且您無法使用 語句還原服務主要金鑰時,才使用 FORCE 選項。
注意: |
服務主要金鑰為 SQL Server 加密階層的根。服務主要金鑰直接或間接地保護樹中的所有其他密鑰和機密內容。如果在強制的重建過程中不能對某個相關密鑰進行解密,則由該密鑰所保護的資料便會丟失。 |
通過 MACHINE KEY
選項,可以使用電腦密鑰添加或刪除加密。
許可權
需要對伺服器具有 CONTROL SERVER 許可權。
樣本
下面的樣本重建服務主要金鑰。
|
複製代碼 |
ALTER SERVICE MASTER KEY REGENERATE; GO |