Megosztás a következőn keresztül:


sp_refresh_parameter_encryption (Transact-SQL)

A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók Azure SQL DatabaseFelügyelt Azure SQL-példány

Frissíti az Always Encrypted metaadatait a megadott nem sémaalapú tárolt eljárás, felhasználó által definiált függvény, nézet, DML-eseményindító, adatbázisszintű DDL-eseményindító vagy kiszolgálószintű DDL-eseményindító paramétereihez az aktuális adatbázisban.

Transact-SQL szintaxis konvenciók

sp_refresh_parameter_encryption
    [ @name = ] N'name'
    [ , [ @namespace = ] { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER } ]
[ ; ]

Arguments

[ @name = ] N'name'

A tárolt eljárás neve, felhasználó által definiált függvény, nézet, DML-eseményindító, adatbázisszintű DDL-eseményindító vagy kiszolgálószintű DDL-eseményindító. @name egy nvarchar(776) típusú változó, alapértelmezés nélkül. @name nem lehet általános nyelvi futtatókörnyezet (CLR) tárolt eljárás vagy CLR-függvény. @name nem lehet sémához kötni. @name többrészes azonosító lehet, de csak az aktuális adatbázisban lévő objektumokra hivatkozhat.

[ @namespace = ] N'namespace'

A megadott modul osztálya. @namespacenvarchar(20), alapértelmezés szerint OBJECT. Ha @name DDL-eseményindító, @namespace szükséges. Az érvényes bemenetek a következők DATABASE_DDL_TRIGGER : és SERVER_DDL_TRIGGER.

Kódértékek visszaadása

0 (sikeres) vagy nemero szám (hiba).

Megjegyzések

A modul paramétereinek titkosítási metaadatai elavulttá válhatnak, ha:

  • Frissítettük a modulhivatkozásokat tartalmazó tábla egyik oszlopának titkosítási tulajdonságait. Például elvetett egy oszlopot, és egy új oszlopot adott hozzá ugyanazzal a névvel, de egy másik titkosítási típust, titkosítási kulcsot vagy titkosítási algoritmust.

  • A modul egy másik modulra hivatkozik, amely elavult paramétertitkosítási metaadatokat tartalmaz.

A tábla titkosítási tulajdonságainak módosításakor sp_refresh_parameter_encryption a táblára közvetlenül vagy közvetve hivatkozó modulok esetében kell futtatni. Ez a tárolt eljárás bármilyen sorrendben meghívható ezeken a modulokon anélkül, hogy a felhasználónak először frissítenie kellene a belső modult, mielőtt a hívókra lépne.

sp_refresh_parameter_encryption nincs hatással az objektumhoz társított engedélyekre, kiterjesztett tulajdonságokra vagy SET beállításokra.

Kiszolgálószintű DDL-eseményindító frissítéséhez hajtsa végre ezt a tárolt eljárást bármely adatbázis környezetéből.

Megjegyzés:

Az objektumhoz társított aláírások törlődnek, amikor futtatja sp_refresh_parameter_encryption.

Permissions

Engedélyre van szükség ALTER a modulhoz és REFERENCES az objektum által hivatkozott CLR-felhasználó által definiált típusokhoz és XML-sémagyűjteményekhez.

Ha a megadott modul egy adatbázisszintű DDL-eseményindító, engedélyre van szükség ALTER ANY DATABASE DDL TRIGGER az aktuális adatbázisban.

Ha a megadott modul egy kiszolgálószintű DDL-eseményindító, engedélyre van szükség CONTROL SERVER .

Az EXECUTE AS feltétellel meghatározott modulokhoz IMPERSONATE engedély szükséges az adott alanyon. Az objektumok frissítése általában nem változtatja meg a megbízottat EXECUTE AS, kivéve, ha a modult EXECUTE AS USER-ként definiálták, és a megbízott felhasználó neve most egy másik felhasználóra oldódik fel, mint ahogyan a modul létrehozásakor.

Példák

Az alábbi példa létrehoz egy táblát és egy táblára hivatkozó eljárást, konfigurálja az Always Encryptedt, majd bemutatja a tábla módosítását és az eljárás futtatását sp_refresh_parameter_encryption .

Először hozza létre a kezdeti táblát és a táblára hivatkozó tárolt eljárást.

CREATE TABLE [Patients]
(
    [PatientID] INT IDENTITY (1, 1) NOT NULL,
    [SSN] CHAR (11),
    [FirstName] NVARCHAR (50) NULL,
    [LastName] NVARCHAR (50) NOT NULL,
    [MiddleName] NVARCHAR (50) NULL,
    [StreetAddress] NVARCHAR (50) NOT NULL,
    [City] NVARCHAR (50) NOT NULL,
    [ZipCode] CHAR (5) NOT NULL,
    [State] CHAR (2) NOT NULL,
    [BirthDate] DATE NOT NULL,
    CONSTRAINT [PK_Patients] PRIMARY KEY CLUSTERED ([PatientID] ASC)
);
GO

CREATE PROCEDURE [find_patient]
@SSN CHAR (11)
AS
BEGIN
    SELECT *
    FROM [Patients]
    WHERE SSN = @SSN;
END
GO

Ezután állítsa be az Always Encrypted kulcsokat.

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 = 0x
    016E000001630075007200720065006E00740075007300650072002F006D0079002F006100360036006200620030006600360064006400370030006200640066006600300032006200360032006400300066003800370065003300340030003200380038006500360066003900330030003500CA0D0CEC74ECADD1804CF99137B4BD06BBAB15D7EA74E0C249A779C7768A5B659E0125D24FF827F5EA8CA517A8E197ECA1353BA814C2B0B2E6C8AB36E3AE6A1E972D69C3C573A963ADAB6686CF5D24F95FE43140C4F9AF48FBA7DF2D053F3B4A1F5693A1F905440F8015BDB43AF8A04BE4E045B89876A0097E5FBC4E6A3B9C3C0D278C540E46C53938B8C957B689C4DC095821C465C73117CBA95B758232F9E5B2FCC7950B8CA00AFE374DE42847E3FBC2FDD277035A2DEF529F4B735C20D980073B4965B4542A34723276A1646998FC6E1C40A3FDB6ABCA98EE2B447F114D2AC7FF8C7D51657550EC5C2BABFFE8429B851272086DCED94332CF18FA854C1D545A28B1EF4BE64F8E035175C1650F6FC5C4702ACF99850A4542B3747EAEC0CC726E091B36CE24392D801ECAA684DE344FECE05812D12CD72254A014D42D0EABDA41C89FC4F545E88B4B8781E5FAF40D7199D4842D2BFE904D209728ED4F527CBC169E2904F6E711FF81A8F4C25382A2E778DD2A58552ED031AFFDA9D9D891D98AD82155F93C58202FC24A77F415D4F8EF22419D62E188AC609330CCBD97CEE1AEF8A18B01958833604707FDF03B2B386487CC679D7E352D0B69F9FB002E51BCD814D077E82A09C14E9892C1F8E0C559CFD5FA841CEF647DAB03C8191DC46B772E94D579D8C80FE93C3827C9F0AE04D5325BC73111E07EEEDBE67F1E2A73580085
);
GO

Végül cserélje le az SSN oszlopot a titkosított oszlopra, és futtassa az Eljárást az sp_refresh_parameter_encryption Always Encrypted összetevők frissítéséhez.

ALTER TABLE [Patients] DROP COLUMN [SSN];
GO

ALTER TABLE [Patients]
    ADD [SSN] CHAR (11) COLLATE Latin1_General_BIN2  ENCRYPTED WITH (
             COLUMN_ENCRYPTION_KEY = [CEK1],
             ENCRYPTION_TYPE = DETERMINISTIC,
             ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
            ) NOT NULL;
GO

EXECUTE sp_refresh_parameter_encryption [find_patient];
GO