據已知的問題現象:凡是和加密相關的東西 都會涉及到 Sqlserver服務器主密鑰。因此 在涉及到“解密過程中出錯 15466”的問題。均可以通過重置服務器主密鑰解決。
注意:這是個運算密集型的操作!!!!可能會丟失加密數據!
語法
ALTER SERVICE MASTER KEY [ { | } ] [;] ::= [ FORCE ] REGENERATE ::= { WITH OLD_ACCOUNT = 'account_name' , OLD_PASSWORD = 'password' } | { WITH NEW_ACCOUNT = 'account_name' , NEW_PASSWORD = 'password' }
參數
FORCE
指示即使存在數據丟失的風險,也應當重新生成服務主密鑰。有關詳細信息,請參閱本主題下文中的更改 SQL Server 服務帳戶。
網:http://www.wfuwu.com/
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