Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
van Azure SQL Database
Azure SQL Managed Instance
Hiermee worden de always encrypted-metagegevens bijgewerkt voor de parameters van de opgegeven niet-schemagebonden opgeslagen procedure, door de gebruiker gedefinieerde functie, weergave, DML-trigger, DDL-trigger op databaseniveau of DDL-trigger op serverniveau in de huidige database.
Transact-SQL syntaxis-conventies
sp_refresh_parameter_encryption
[ @name = ] N'name'
[ , [ @namespace = ] { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER } ]
[ ; ]
Arguments
[ @name = ] N'name'
De naam van de opgeslagen procedure, door de gebruiker gedefinieerde functie, weergave, DML-trigger, DDL-trigger op databaseniveau of DDL-trigger op serverniveau. @name is nvarchar(776), zonder standaardinstelling. @name kan geen opgeslagen procedure (COMMON Language Runtime) of een CLR-functie zijn. @name kan geen schemagebonden zijn. @name kan een meervoudige id zijn, maar kan alleen verwijzen naar objecten in de huidige database.
[ @namespace = ] N'naamruimte'
De klasse van de opgegeven module.
@namespace is nvarchar(20), met een standaardwaarde van OBJECT. Wanneer @name een DDL-trigger is, is @namespace vereist. Geldige invoeren zijn DATABASE_DDL_TRIGGER en SERVER_DDL_TRIGGER.
Codewaarden retourneren
0 (geslaagd) of een niet-nulnummer (fout).
Opmerkingen
De versleutelingsmetagegevens voor parameters van een module kunnen verouderd raken als:
Versleutelingseigenschappen van een kolom in een tabel waarnaar de moduleverwijzingen verwijzen, zijn bijgewerkt. Een kolom is bijvoorbeeld verwijderd en er wordt een nieuwe kolom toegevoegd met dezelfde naam, maar een ander versleutelingstype, versleutelingssleutel of een versleutelingsalgoritmen.
De module verwijst naar een andere module met verouderde metagegevens voor parameterversleuteling.
Wanneer versleutelingseigenschappen van een tabel worden gewijzigd, sp_refresh_parameter_encryption moet deze worden uitgevoerd voor modules die direct of indirect naar de tabel verwijzen. Deze opgeslagen procedure kan in elke willekeurige volgorde op deze modules worden aangeroepen, zonder dat de gebruiker eerst de interne module moet vernieuwen voordat deze naar de aanroepers wordt verplaatst.
sp_refresh_parameter_encryption heeft geen invloed op machtigingen, uitgebreide eigenschappen of SET opties die aan het object zijn gekoppeld.
Als u een DDL-trigger op serverniveau wilt vernieuwen, voert u deze opgeslagen procedure uit vanuit de context van een database.
Opmerking
Handtekeningen die aan het object zijn gekoppeld, worden verwijderd wanneer u sp_refresh_parameter_encryption uitvoert.
Permissions
Vereist ALTER machtigingen voor de module en REFERENCES machtigingen voor door de gebruiker gedefinieerde CLR-typen en XML-schemaverzamelingen waarnaar wordt verwezen door het object.
Wanneer de opgegeven module een DDL-trigger op databaseniveau is, is de machtiging in de huidige database vereist ALTER ANY DATABASE DDL TRIGGER .
Wanneer de opgegeven module een DDL-trigger op serverniveau is, is een machtiging vereist CONTROL SERVER .
Voor modules die zijn gedefinieerd met de EXECUTE AS clausule, is IMPERSONATE toestemming vereist voor de opgegeven principal. Over het algemeen verandert het vernieuwen van een object de principal niet EXECUTE AS, tenzij de module is gedefinieerd met EXECUTE AS USER en de gebruikersnaam van de principal nu verwijst naar een andere gebruiker dan op het moment dat de module werd gecreƫerd.
Voorbeelden
In het volgende voorbeeld wordt een tabel en een procedure gemaakt die verwijst naar de tabel, Always Encrypted geconfigureerd. Vervolgens ziet u hoe u de tabel wijzigt en de sp_refresh_parameter_encryption procedure uitvoert.
Maak eerst de eerste tabel en een opgeslagen procedure die verwijst naar de tabel.
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
Stel vervolgens Always Encrypted-sleutels in.
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
Vervang ten slotte de SSN-kolom door de versleutelde kolom en voer de sp_refresh_parameter_encryption procedure uit om de Always Encrypted-onderdelen bij te werken.
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