Dela via


sp_describe_parameter_encryption (Transact-SQL)

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed Instance

Analyserar den angivna Transact-SQL-instruktionen och dess parametrar för att avgöra vilka parametrar som motsvarar databaskolumner som skyddas med funktionen Always Encrypted. Returnerar krypteringsmetadata för de parametrar som motsvarar krypterade kolumner.

Syntax

sp_describe_parameter_encryption
    [ @tsql = ] N'tsql'
    [ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]

Argument

Viktig

Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.

[ @tsql = ] "tsql"

En eller flera Transact-SQL-instruktioner. @tsql kan vara nvarchar(n) eller nvarchar(max).

[ @params = ] N'@parameter_namedata_type [ ,... n ]'

@params innehåller en deklarationssträng för parametrar för @tsql, som liknar sp_executesql. Parametrarna kan vara nvarchar(n) eller nvarchar(max).

En sträng som innehåller definitionerna för alla parametrar som är inbäddade i Transact-SQL_batch. Strängen måste vara antingen en Unicode-konstant eller en Unicode-variabel. Varje parameterdefinition består av ett parameternamn och en datatyp. n är en platshållare som anger ytterligare parameterdefinitioner. n är en platshållare som anger ytterligare parameterdefinitioner. Varje parameter som anges i -instruktionen måste definieras i @params. Om Transact-SQL-instruktionen eller batchen i -instruktionen inte innehåller parametrar krävs inte @params. NULL är standardvärdet för den här parametern.

Returvärde

0 indikerar framgång. Allt annat tyder på fel.

Resultatuppsättning

sp_describe_parameter_encryption returnerar två resultatuppsättningar:

  • Resultatuppsättningen som beskriver kryptografiska nycklar som konfigurerats för databaskolumner motsvarar parametrarna för den angivna Transact-SQL-instruktionen.

  • Resultatuppsättningen som beskriver hur vissa parametrar ska krypteras. Den här resultatuppsättningen refererar till nycklarna som beskrivs i den första resultatuppsättningen.

Varje rad i den första resultatuppsättningen beskriver ett par nycklar: en krypterad kolumnkrypteringsnyckel och dess motsvarande kolumnhuvudnyckel (CMK).

Kolumnnamn Datatyp Beskrivning
column_encryption_key_ordinal int ID för raden i resultatuppsättningen.
database_id int Databas-ID.
column_encryption_key_id int Kolumnkrypteringsnyckelns ID.

Obs! det här ID:t anger en rad i sys.column_encryption_keys katalogvy.
column_encryption_key_version int Reserverad för framtida användning. Innehåller för närvarande alltid 1.
column_encryption_key_metadata_version binär(8) En tidsstämpel som representerar skapandetiden för kolumnkrypteringsnyckeln.
column_encryption_key_encrypted_value varbinary(4000) Det krypterade värdet för kolumnkrypteringsnyckeln.
column_master_key_store_provider_name sysname Namnet på providern för nyckelarkivet som innehåller CMK, som användes för att skapa det krypterade värdet för kolumnkrypteringsnyckeln.
column_master_key_path nvarchar(4000) Nyckelsökvägen för CMK:en, som användes för att skapa det krypterade värdet för kolumnkrypteringsnyckeln.
column_encryption_key_encryption_algorithm_name sysname Namnet på krypteringsalgoritmen som används för att skapa krypteringsvärdet för kolumnkrypteringsnyckeln.

Varje rad i den andra resultatuppsättningen innehåller krypteringsmetadata för en parameter.

Kolumnnamn Datatyp Beskrivning
parameter_ordinal int ID för raden i resultatuppsättningen.
parameter_name sysname Namnet på en av parametrarna som anges i argumentet @params.
column_encryption_algorithm pytteliten Kod som anger krypteringsalgoritmen som konfigurerats för kolumnen som parametern motsvarar. Det värde som stöds för närvarande är 2 för AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type pytteliten Kod som anger den krypteringstyp som konfigurerats för kolumnen motsvarar parametern. De värden som stöds är:

0 – klartext (kolumnen är inte krypterad)
1 – deterministisk kryptering
2 – randomiserad kryptering.
column_encryption_key_ordinal int Kod för raden i den första resultatuppsättningen. Den refererade raden beskriver den kolumnkrypteringsnyckel som konfigurerats för kolumnen, parametern motsvarar.
column_encryption_normalization_rule_version pytteliten Versionsnummer för typnormaliseringsalgoritmen.

Anmärkningar

En SQL Server-klientdrivrutin med stöd för Always Encrypted anropar automatiskt sp_describe_parameter_encryption för att hämta krypteringsmetadata för parametriserade frågor som utfärdats av programmet. Sedan använder drivrutinen krypteringsmetadata för att kryptera värdena för parametrar som motsvarar databaskolumner som skyddas med Always Encrypted. Den ersätter parametervärdena i klartext som skickas av programmet med de krypterade parametervärdena innan frågan skickas till databasmotorn.

Behörigheter

Kräv behörigheterna VIEW ANY COLUMN ENCRYPTION KEY DEFINITION och VIEW ANY COLUMN MASTER KEY DEFINITION i databasen.

Exempel

I följande exempel trunkerar värdet för ENCRYPTED_VALUEi visningssyfte.

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

Här är den första resultatuppsättningen:

Spalt Värde
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

Här är den andra resultatuppsättningen:

Spalt Värde
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