sp_refresh_parameter_encryption (Transact-SQL)
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed Instance
Met à jour les métadonnées Always Encrypted pour les paramètres de la procédure stockée non liée au schéma spécifiée, fonction définie par l’utilisateur, vue, déclencheur DML, déclencheur DDL au niveau de la base de données ou déclencheur DDL au niveau du serveur spécifié dans la base de données active.
Conventions de la syntaxe Transact-SQL
Syntaxe
sys.sp_refresh_parameter_encryption [ @name = ] 'module_name'
[ , [ @namespace = ] '<class>' ]
[ ; ]
<class> ::=
{ DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER }
Arguments
[ @name = ] 'module_name'
Nom de la procédure stockée, de la fonction définie par l’utilisateur, de la vue, du déclencheur DML, du déclencheur DDL au niveau de la base de données ou du déclencheur DDL au niveau du serveur. module_name ne peut pas être une procédure stockée CLR (Common Language Runtime) ou une fonction CLR. module_name ne peut pas être lié au schéma. module_name est nvarchar
, sans valeur par défaut. module_name peut être un identificateur en plusieurs parties, mais ne peut faire référence qu’aux objets de la base de données active.
[ @namespace = ] ' < class > '
Classe du module spécifié. Lorsque module_name est un déclencheur DDL, <class>
il est nécessaire. <class>
a la valeur nvarchar(20)
. Les entrées valides sont DATABASE_DDL_TRIGGER
et SERVER_DDL_TRIGGER
.
Codet de retour
0 (réussite) ou un nombre différent de zéro (échec)
Remarques
Les métadonnées de chiffrement des paramètres d’un module peuvent devenir obsolètes, si :
- Les propriétés de chiffrement d’une colonne d’une table les références de module ont été mises à jour. Par exemple, une colonne a été supprimée et une nouvelle colonne portant le même nom, mais un autre type de chiffrement, clé de chiffrement ou algorithme de chiffrement a été ajouté.
- Le module fait référence à un autre module avec des métadonnées de chiffrement de paramètre obsolètes.
Lorsque les propriétés de chiffrement d’une table sont modifiées, sp_refresh_parameter_encryption
elles doivent être exécutées pour tous les modules directement ou indirectement faisant référence à la table. Cette procédure stockée peut être appelée sur ces modules dans n’importe quel ordre, sans exiger que l’utilisateur actualise d’abord le module interne avant de passer à ses appelants.
sp_refresh_parameter_encryption
n’affecte aucune autorisation, propriétés étendues ou SET
options associées à l’objet.
Pour actualiser un déclencheur DDL au niveau du serveur, exécutez cette procédure stockée à partir du contexte de toute base de données.
Note
Toutes les signatures associées à l’objet sont supprimées lorsque vous exécutez sp_refresh_parameter_encryption
.
Autorisations
Nécessite ALTER
l’autorisation sur le module et REFERENCES
l’autorisation sur les types définis par l’utilisateur CLR et les collections de schémas XML référencées par l’objet.
Lorsque le module spécifié est un déclencheur DDL au niveau de la base de données, nécessite ALTER ANY DATABASE DDL TRIGGER
une autorisation dans la base de données active.
Lorsque le module spécifié est un déclencheur DDL au niveau du serveur, nécessite CONTROL SERVER
une autorisation.
Pour les modules définis avec la EXECUTE AS
clause, IMPERSONATE
l’autorisation est requise sur le principal spécifié. En règle générale, l’actualisation d’un objet ne modifie pas son EXECUTE AS
principal, sauf si le module a été défini et EXECUTE AS USER
que le nom d’utilisateur du principal est désormais résolu en un autre utilisateur qu’au moment de la création du module.
Examples
L’exemple suivant crée une table et une procédure référençant la table, configure Always Encrypted, puis illustre la modification de la table et l’exécution de la sp_refresh_parameter_encryption
procédure.
Commencez par créer la table initiale et une procédure stockée référençant la table.
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
) WITH
(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY];
GO
CREATE PROCEDURE [find_patient] @SSN [char](11)
AS
BEGIN
SELECT * FROM [Patients] WHERE SSN=@SSN
END;
GO
Configurez ensuite les clés 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 =
0x016E000001630075007200720065006E00740075007300650072002F006D0079002F006100360036006200620030006600360064006400370030006200640066006600300032006200360032006400300066003800370065003300340030003200380038006500360066003900330030003500CA0D0CEC74ECADD1804CF99137B4BD06BBAB15D7EA74E0C249A779C7768A5B659E0125D24FF827F5EA8CA517A8E197ECA1353BA814C2B0B2E6C8AB36E3AE6A1E972D69C3C573A963ADAB6686CF5D24F95FE43140C4F9AF48FBA7DF2D053F3B4A1F5693A1F905440F8015BDB43AF8A04BE4E045B89876A0097E5FBC4E6A3B9C3C0D278C540E46C53938B8C957B689C4DC095821C465C73117CBA95B758232F9E5B2FCC7950B8CA00AFE374DE42847E3FBC2FDD277035A2DEF529F4B735C20D980073B4965B4542A34723276A1646998FC6E1C40A3FDB6ABCA98EE2B447F114D2AC7FF8C7D51657550EC5C2BABFFE8429B851272086DCED94332CF18FA854C1D545A28B1EF4BE64F8E035175C1650F6FC5C4702ACF99850A4542B3747EAEC0CC726E091B36CE24392D801ECAA684DE344FECE05812D12CD72254A014D42D0EABDA41C89FC4F545E88B4B8781E5FAF40D7199D4842D2BFE904D209728ED4F527CBC169E2904F6E711FF81A8F4C25382A2E778DD2A58552ED031AFFDA9D9D891D98AD82155F93C58202FC24A77F415D4F8EF22419D62E188AC609330CCBD97CEE1AEF8A18B01958833604707FDF03B2B386487CC679D7E352D0B69F9FB002E51BCD814D077E82A09C14E9892C1F8E0C559CFD5FA841CEF647DAB03C8191DC46B772E94D579D8C80FE93C3827C9F0AE04D5325BC73111E07EEEDBE67F1E2A73580085
);
GO
Enfin, nous remplacez la colonne SSN par la colonne chiffrée, puis exécute la sp_refresh_parameter_encryption
procédure pour mettre à jour les composants 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
EXEC sp_refresh_parameter_encryption [find_patient];
GO
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour