Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Aktualizuje metadata Always Encrypted pro parametry zadané uložené procedury nevázané na schéma, uživatelem definovanou funkci, zobrazení, trigger DML, trigger DDL na úrovni databáze nebo trigger DDL na úrovni serveru v aktuální databázi.
sp_refresh_parameter_encryption
[ @name = ] N'name'
[ , [ @namespace = ] { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER } ]
[ ; ]
Arguments
[ @name = ] N'name'
Název uložené procedury, uživatelem definovaná funkce, zobrazení, trigger DML, trigger DDL na úrovni databáze nebo trigger DDL na úrovni serveru. @name je nvarchar(776) bez výchozího nastavení. @name nemůže být uložená procedura CLR (Common Language Runtime) ani funkce CLR. @name nemůže být svázaný se schématem. @name může být identifikátor s více částmi, ale může odkazovat pouze na objekty v aktuální databázi.
[ @namespace = ] N'namespace'
Třída zadaného modulu.
@namespace je nvarchar(20) s výchozím nastavením OBJECT. Pokud je @name aktivační událost DDL, @namespace se vyžaduje. Platné vstupy jsou DATABASE_DDL_TRIGGER a SERVER_DDL_TRIGGER.
Hodnoty návratového kódu
0 (úspěch) nebo nenulové číslo (selhání).
Poznámky
Šifrovací metadata parametrů modulu můžou být zastaralá, pokud:
Vlastnosti šifrování sloupce v tabulce, na které odkazuje modul, byly aktualizovány. Například sloupec byl vyřazen a nový sloupec se přidá se stejným názvem, ale jiný typ šifrování, šifrovací klíč nebo šifrovací algoritmus.
Modul odkazuje na jiný modul s zastaralými metadaty šifrování parametrů.
Když jsou upraveny vlastnosti šifrování tabulky, měl by být spuštěn sp_refresh_parameter_encryption pro všechny moduly, které přímo nebo nepřímo odkazují na tabulku. Tuto uloženou proceduru lze zavolat na těchto modulech v libovolném pořadí, aniž by uživatel musel aktualizovat vnitřní modul dříve, než přejde na volající.
sp_refresh_parameter_encryption nemá vliv na žádná oprávnění, rozšířené vlastnosti ani SET možnosti přidružené k objektu.
Pokud chcete aktualizovat trigger DDL na úrovni serveru, spusťte tuto uloženou proceduru z kontextu jakékoli databáze.
Poznámka:
Všechny podpisy přidružené k objektu se při spuštění sp_refresh_parameter_encryptionzahodí .
Povolení
Vyžaduje ALTER oprávnění k modulu a REFERENCES oprávnění pro všechny uživatelem definované typy CLR a kolekce schémat XML odkazované objektem.
Pokud je zadaným modulem trigger DDL na úrovni databáze, vyžaduje ALTER ANY DATABASE DDL TRIGGER oprávnění v aktuální databázi.
Pokud je zadaným modulem trigger DDL na úrovni serveru, vyžaduje CONTROL SERVER oprávnění.
Pro moduly definované pomocí EXECUTE AS klauzule IMPERSONATE je na určeném hlavním objektu vyžadováno oprávnění. Obecně platí, že aktualizace objektu nezmění jeho EXECUTE AS objekt zabezpečení, pokud modul nebyl definován s EXECUTE AS USER a uživatelské jméno objektu zabezpečení nyní nevede k jinému uživateli, než tomu bylo v době, kdy byl modul vytvořen.
Examples
Následující příklad vytvoří tabulku a proceduru odkazující na tabulku, nakonfiguruje Funkci Always Encrypted a pak demonstruje změnu tabulky a spuštění sp_refresh_parameter_encryption procedury.
Nejprve vytvořte počáteční tabulku a uloženou proceduru odkazující na tabulku.
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
Pak nastavte klíče Always Encrypted.
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
Nakonec nahraďte sloupec SSN šifrovaným sloupcem a spusťte sp_refresh_parameter_encryption postup aktualizace komponent Always Encrypted.
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