CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

適用于:SQL Server (所有支援的版本) Azure SQL 受控執行個體 Analytics Platform System ( PDW)

建立用於以透明方式加密資料庫的加密金鑰。 如需透明資料庫加密的詳細資訊,請參閱 透明資料加密 (TDE)

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

Syntax

-- Syntax for SQL Server  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER   
    {  
        CERTIFICATE Encryptor_Name |  
        ASYMMETRIC KEY Encryptor_Name  
    }  
[ ; ]  
-- Syntax for Parallel Data Warehouse  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name   
[ ; ]  

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

WITH ALGORITHM = { AES_128 |AES_192 |AES_256 |TRIPLE_DES_3KEY }
指定用於加密金鑰的加密演算法。

警告

開頭為 SQL Server 2016,所有 AES_128、AES_192 和 AES_256 以外的演算法均已淘汰。 若要使用較舊的演算法 (不建議使用),您必須將資料庫相容性層級設定為 120 或更低。

ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
指定用於加密資料庫加密金鑰之加密程式的名稱。

ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
指定用於加密資料庫加密金鑰之非對稱金鑰的名稱。 為了利用非對稱金鑰加密資料庫加密金鑰,非對稱金鑰必須位在可延伸金鑰管理提供者上。

備註

您需要具備資料庫加密金鑰,資料庫才可以使用「資料庫透明加密」(TDE) 進行加密。 當資料庫以透明方式進行加密時,會在檔案層級加密整個資料庫,而不需要修改任何特殊的程式碼。 用於加密資料庫加密金鑰的憑證或非對稱金鑰必須位於 master 系統資料庫中。

用於 TDE 的憑證或非對稱金鑰僅限於 3072 位的私密金鑰大小。

資料庫加密陳述式僅允許用於使用者資料庫。

資料庫加密金鑰無法從資料庫匯出。 只有系統、擁有伺服器偵錯權限的使用者,以及可存取加密和解密資料庫加密金鑰之憑證的使用者可以進行匯出。

變更資料庫擁有者 (dbo) 時,不需要重新產生資料庫加密金鑰。

系統會自動為SQL Database資料庫建立資料庫加密金鑰。 您不需要使用 CREATE DATABASE ENCRYPTION KEY 陳述式來建立金鑰。

權限

需要資料庫的 CONTROL 權限,以及用於加密資料庫加密金鑰之憑證或非對稱金鑰的 VIEW DEFINITION 權限。

範例

如需使用 TDE 的其他範例,請參閱透明資料加密 (TDE) 使用 EKM 在 SQL Server 上啟用 TDE,以及使用 Azure 金鑰保存庫 (SQL Server) 進行可延伸金鑰管理

下列範例會利用 AES_256 演算法建立一個資料庫加密金鑰,並且使用名稱為 MyServerCert 的憑證保護私密金鑰。

USE AdventureWorks2012;  
GO  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_256  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  

另請參閱

透明資料加密 (TDE)
SQL Server 加密
SQL Server 和資料庫加密金鑰 (資料庫引擎)
加密階層
ALTER DATABASE SET 選項 (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)