sp_describe_parameter_encryption (Transact-SQL)
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
分析指定的 Transact-SQL 語句及其參數,以判斷哪些參數對應至使用 Always Encrypted 功能保護的資料庫數據行。 傳回對應至加密數據行之參數的加密元數據。
語法
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
引數
[ @tsql = ] 'tsql'
一或多個 Transact-SQL 語句。 @tsql可能是 nvarchar(n) 或 nvarchar(max)。
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@params為 @tsql 的參數提供宣告字串,類似於 sp_executesql
。 參數可能是 nvarchar(n) 或 nvarchar(max)。
字串,包含 Transact-SQL_batch中內嵌之所有參數的定義。 字串必須是 Unicode 常數或 Unicode 變數。 每個參數定義都由參數名稱和資料類型組成。 n 是一個預留位置,表示其他參數定義。 n 是一個預留位置,表示其他參數定義。 語句中指定的每個參數都必須在 @params 中定義。 如果語句中的 Transact-SQL 語句或批次不包含參數, 則不需要@params 。 NULL
是此參數的預設值。
傳回值
0
表示成功。 任何其他專案都表示失敗。
結果集
sp_describe_parameter_encryption
會傳回兩個結果集:
描述針對資料庫資料列所設定之密碼編譯金鑰的結果集,所指定 Transact-SQL 語句的參數會對應至 。
描述應如何加密特定參數的結果集。 此結果集會參考第一個結果集中所述的索引鍵。
第一個結果集的每個數據列都會描述一組密鑰:加密的數據行加密密鑰,以及其對應的數據行主要密鑰(CMK)。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
column_encryption_key_ordinal |
int | 結果集中數據列的標識碼。 |
database_id |
int | 資料庫識別碼。 |
column_encryption_key_id |
int | 數據行加密金鑰識別碼。 注意:此標識元表示sys.column_encryption_keys目錄檢視中的數據列。 |
column_encryption_key_version |
int | 保留供未來使用。 目前一律包含 1 。 |
column_encryption_key_metadata_version |
binary(8) | 時間戳,表示數據行加密金鑰的建立時間。 |
column_encryption_key_encrypted_value |
varbinary(4000) | 數據行加密金鑰的加密值。 |
column_master_key_store_provider_name |
sysname | 包含 CMK 之金鑰存放區的提供者名稱,用來產生資料行加密密鑰的加密值。 |
column_master_key_path |
nvarchar(4000) | CMK 的金鑰路徑,用來產生資料行加密金鑰的加密值。 |
column_encryption_key_encryption_algorithm_name |
sysname | 用來產生資料行加密金鑰加密值的加密演算法名稱。 |
第二個結果集的每個數據列都包含一個參數的加密元數據。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
parameter_ordinal |
int | 結果集中數據列的標識碼。 |
parameter_name |
sysname | @params 自變數中指定的其中一個參數名稱。 |
column_encryption_algorithm |
tinyint | 指出參數所對應數據行所設定加密演算法的程序代碼。 目前支援的值適用於 2 AEAD_AES_256_CBC_HMAC_SHA_256 。 |
column_encryption_type |
tinyint | 顯示為資料列設定之加密型態的程式碼,參數會對應至 。 支援的 值為:0 - 純文字 (資料列未加密)1 - 確定性加密2 - 隨機化加密。 |
column_encryption_key_ordinal |
int | 第一個結果集中數據列的程序代碼。 參考的資料列描述為資料列設定的資料列加密金鑰,參數會對應至 。 |
column_encryption_normalization_rule_version |
tinyint | 類型正規化演算法的版本號碼。 |
備註
支援 Always Encrypted 的 SQL Server 用戶端驅動程式會自動呼叫 sp_describe_parameter_encryption
來擷取應用程式所發出參數化查詢的加密元數據。 然後,驅動程式會使用加密元數據來加密對應至以 Always Encrypted 保護之資料庫數據行的參數值。 它會以加密的參數值取代應用程式提交的純文本參數值,再將查詢傳送至資料庫引擎。
權限
需要 資料庫中的 VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
和 VIEW ANY COLUMN MASTER KEY DEFINITION
許可權。
範例
下列範例會針對 顯示目的截斷 的值 ENCRYPTED_VALUE
。
CREATE COLUMN MASTER KEY [CMK1]
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = N'CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305'
);
GO
CREATE COLUMN ENCRYPTION KEY [CEK1]
WITH VALUES (
COLUMN_MASTER_KEY = [CMK1],
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = 0x016E00000163007500720072<...> -- truncated in this example
);
GO
CREATE TABLE t1 (
c1 INT ENCRYPTED WITH (
COLUMN_ENCRYPTION_KEY = [CEK1],
ENCRYPTION_TYPE = Randomized,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) NULL,
);
EXEC sp_describe_parameter_encryption
N'INSERT INTO t1 VALUES(@c1)',
N'@c1 INT';
以下是第一個結果集:
資料行 | 值 |
---|---|
column_encryption_key_ordinal |
1 |
database_id |
5 |
column_encryption_key_id |
1 |
column_encryption_key_version |
1 |
column_encryption_key_metadata_version |
0x99EDA60083A50000 |
column_encryption_key_encrypted_value |
0x016E00000163007500720072<...> |
column_master_key_store_provider_name |
MSSQL_CERTIFICATE_STORE |
column_master_key_path |
CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305 |
column_encryption_key_encryption_algorithm_name |
RSA_OAEP |
以下是第二個結果集:
資料行 | 值 |
---|---|
parameter_ordinal |
1 |
parameter_name |
@c1 |
column_encryption_algorithm |
1 |
column_encryption_type |
1 |
column_encryption_key_ordinal |
1 |
column_encryption_normalization_rule_version |
1 |