CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體Analytics Platform System (PDW)

建立用於以透明方式加密資料庫的加密金鑰。 如需透明資料加密 (TDE) 的詳細資訊,請參閱 透明資料加密 (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 (12.x) 和舊版的 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
指定用於加密資料庫加密金鑰之非對稱金鑰的名稱。 為了利用非對稱金鑰加密資料庫加密金鑰,非對稱金鑰必須位在可延伸金鑰管理提供者上。

備註

使用透明數據加密來加密資料庫之前,必須先有資料庫加密密鑰。 當資料庫以透明方式進行加密時,會在檔案層級加密整個資料庫,而不需要修改任何特殊的程式碼。 用於加密資料庫加密金鑰的憑證或非對稱金鑰必須位於 master 系統資料庫中。

用於 TDE 的憑證或對稱金鑰限制在 3072 位元的私密金鑰大小。

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

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

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

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

權限

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

範例

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

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

USE AdventureWorks2022;  
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)