ALTER SERVICE MASTER KEY (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

變更 SQL Server 執行個體的服務主要金鑰。

Transact-SQL 語法慣例

Syntax

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' }  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

FORCE
指出即使有遺失資料的風險,仍應重新產生服務主要金鑰。 如需詳細資訊,請參閱本主題稍後的變更 SQL Server 服務帳戶

REGENERATE
指出應重新產生服務主要金鑰。

OLD_ACCOUNT ='account_name'
指定舊的 Windows 服務帳戶名稱。

警告

這個選項已過時。 請勿使用。 請改用 SQL Server 組態管理員。

OLD_PASSWORD ='password'
指定舊的 Windows 服務帳戶的密碼。

警告

這個選項已過時。 請勿使用。 請改用 SQL Server 組態管理員。

NEW_ACCOUNT ='account_name'
指定新的 Windows 服務帳戶名稱。

警告

這個選項已過時。 請勿使用。 請改用 SQL Server 組態管理員。

NEW_PASSWORD ='password'
指定新的 Windows 服務帳戶的密碼。

警告

這個選項已過時。 請勿使用。 請改用 SQL Server 組態管理員。

備註

第一次需要利用服務主要金鑰來加密連結伺服器密碼、認證或資料庫主要金鑰時,會自動產生服務主要金鑰。 服務主要金鑰是以本機電腦金鑰或 Windows 資料保護 API 加密。 這個 API 會使用衍生自 SQL Server 服務帳戶之 Windows 認證的金鑰。

SQL Server 2012 (11.x) 是使用 AES 加密演算法來保護服務主要金鑰 (SMK) 及資料庫主要金鑰 (DMK)。 與舊版中使用的 3DES 相比,AES 是一種較新的加密演算法。 將資料庫引擎執行個體升級至 SQL Server 2012 (11.x) 之後,應該會重新產生 SMK 和 DMK,將主要金鑰升級至 AES。 如需重新產生 DMK 的詳細資訊,請參閱 ALTER MASTER KEY (Transact-SQL)

變更 SQL Server 服務帳戶

若要變更 SQL Server 服務帳戶,請使用 SQL Server 組態管理員。 為管理服務帳戶的變更,SQL Server 會儲存一個備用的服務主要金鑰,並由已將必要權限授與 SQL Server 服務群組的電腦帳戶所保護。 如果電腦經過重建,服務帳戶先前所使用的相同網域使用者可以復原服務主要金鑰。 這不適用於本機帳戶或本機系統、本機服務或網路服務帳戶。 當您要將 SQL Server 移動到另一部電腦時,請使用備份和還原來移轉服務主要金鑰。

REGENERATE 片語會重新產生服務主要金鑰。 當重新產生服務主要金鑰時,SQL Server 會解密所有利用它加密的金鑰,然後利用新的服務主要金鑰來加密這些金鑰。 這是一項需要大量資源的作業。 除非已危害金鑰,否則,您應該將這項作業安排在低需求時進行。 如果任何一項解密失敗,整個陳述式便會失敗。

即使處理序無法擷取目前的主要金鑰,或無法解密所有利用該金鑰加密的私密金鑰,FORCE 選項仍會使金鑰重新產生處理序繼續進行。 請只有在重新產生作業失敗或無法使用 RESTORE SERVICE MASTER KEY 陳述式來還原服務主要金鑰時,才使用 FORCE。

警告

服務主要金鑰是 SQL Server 加密階層的根。 服務主要金鑰會直接或間接保護樹狀中的所有其他金鑰和秘密。 如果在強制重新產生作業進行期間某相依金鑰無法解密,由該金鑰維護其安全的資料便會遺失。

如果您將 SQL 移至另一部電腦,則必須使用相同的服務帳戶來解密 SMK - SQL Server 將自動修正電腦帳戶加密。

權限

需要伺服器的 CONTROL SERVER 權限。

範例

下列範例會重新產生服務主要金鑰。

ALTER SERVICE MASTER KEY REGENERATE;  
GO  

另請參閱

RESTORE SERVICE MASTER KEY (Transact-SQL)
BACKUP SERVICE MASTER KEY (Transact-SQL)
加密階層