共用方式為


sp_control_dbmasterkey_password (Transact-SQL)

加入或卸除包含開啟資料庫主要金鑰時所需密碼的認證。

主題連結圖示Transact-SQL 語法慣例

語法

sp_control_dbmasterkey_password @db_name = 'database_name' 
        , @password = 'master_key_password' 
        , @action = { 'add' | 'drop' }

引數

  • @db_name=N'database_name'
    指定這個認證的相關資料庫名稱。不能是系統資料庫。database_namenvarchar
  • @password= N'password'
    指定主要金鑰的密碼。passwordnvarchar
  • @action=N'add'
    指定要將指定資料庫的認證加入至認證存放區中。認證會包含資料庫主要金鑰的密碼。傳遞至 @action 的值是 nvarchar
  • @action= N'drop'
    指定要從認證存放區中卸除指定資料庫的認證。傳遞至 @action 的值是 nvarchar

備註

當 SQL Server 需要利用資料庫主要金鑰解密或加密金鑰時,SQL Server 會嘗試利用執行個體的服務主要金鑰來解密資料庫主要金鑰。如果解密失敗,SQL Server 會從認證存放區中搜尋主要金鑰憑證,而這是含有與它需要其主要金鑰之資料庫相同家族 GUID 的主要金鑰認證。接著,SQL Server 會嘗試利用每個相符的認證來解密資料庫主要金鑰,直到解密成功或沒有其他認證為止。

ms182754.Caution(zh-tw,SQL.90).gif注意:
請勿建立一個不能由 sa 和其他高權限伺服器主體存取之資料庫的主要金鑰認證。您可以將資料庫設為不能由服務主要金鑰解密它的金鑰階層。這個選項可作為特定資料庫的深度防衛,該等資料庫所含加密資訊不應該由 sa 或其他高權限伺服器主體存取。建立這類資料庫的主要金鑰認證會移除這個深度防衛,使 sa 和其他高權限伺服器主體能夠解密資料庫。

您可以在 sys.master_key_passwords 目錄檢視中,看到利用 sp_control_dbmasterkey_password 建立的認證。為資料庫主要金鑰建立的認證名稱採用下列格式:##DBMKEY_<database_family_guid>_<random_password_guid>##。密碼會儲存為認證秘密。就加入至認證存放區的每個密碼而言,sys.credentials 中都有資料列。

您無法利用 sp_control_dbmasterkey_password 建立下列系統資料庫的認證:mastermodelmsdbtempdb

sp_control_dbmasterkey_password 不確認密碼可以開啟指定資料庫的主要金鑰。

如果您指定的密碼已儲存在指定資料庫的認證中,sp_control_dbmasterkey_password 會失敗。

ms182754.note(zh-tw,SQL.90).gif附註:
來自不同伺服器執行個體的兩個資料庫可以共用相同的家族 GUID。如果發生這種情況,這兩個資料庫會共用認證存放區中相同的主要金鑰記錄。

傳遞至 sp_control_dbmasterkey_password 的參數不會出現在追蹤中。

權限

需要資料庫的 CONTROL 權限。

範例

A. 建立 AdventureWorks 主要金鑰的認證

下列範例會建立 AdventureWorks 資料庫主要金鑰的認證,並將主要金鑰密碼儲存為認證中的秘密。因為傳遞至 sp_control_dbmasterkey_password 的所有參數都必須屬於資料類型 nvarchar,所以必須利用轉換運算子 N 來轉換字串。

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO

B. 卸除資料庫主要金鑰的認證

下列範例會移除範例 A 中建立的認證。請注意,所有參數都需要,包括密碼。

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO

請參閱

參考

安全性預存程序 (Transact-SQL)
系統預存程序 (Transact-SQL)
sys.credentials (Transact-SQL)

其他資源

設定加密鏡像資料庫
認證

說明及資訊

取得 SQL Server 2005 協助