Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Aktualizuje metadane Always Encrypted dla parametrów określonej procedury składowanej bez schematu, funkcji zdefiniowanej przez użytkownika, widoku, wyzwalacza DML, wyzwalacza DDL na poziomie bazy danych lub wyzwalacza DDL na poziomie serwera w bieżącej bazie danych.
Transact-SQL konwencje składni
sp_refresh_parameter_encryption
[ @name = ] N'name'
[ , [ @namespace = ] { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER } ]
[ ; ]
Arguments
[ @name = ] N'name'
Nazwa procedury składowanej, funkcji zdefiniowanej przez użytkownika, widoku, wyzwalacza DML, wyzwalacza DDL na poziomie bazy danych lub wyzwalacza DDL na poziomie serwera. @name jest nvarchar(776), bez wartości domyślnej. @name nie może być procedurą składowaną środowiska uruchomieniowego języka wspólnego (CLR) ani funkcją CLR. @name nie można powiązać ze schematem. @name może być identyfikatorem wieloczęściowym, ale może odwoływać się tylko do obiektów w bieżącej bazie danych.
[ @namespace = ] N'namespace'
Klasa określonego modułu.
@namespace to nvarchar(20), z wartością domyślną OBJECT. Gdy @name jest wyzwalaczem DDL, wymagane jest @namespace . Prawidłowe dane wejściowe to DATABASE_DDL_TRIGGER i SERVER_DDL_TRIGGER.
Zwracanie wartości kodu
0 (powodzenie) lub liczba niezerowa (niepowodzenie).
Uwagi
Metadane szyfrowania parametrów modułu mogą stać się nieaktualne, jeśli:
Zaktualizowano właściwości szyfrowania kolumny w tabeli, do których odwołuje się moduł. Na przykład kolumna została porzucona, a nowa kolumna zostanie dodana o tej samej nazwie, ale inny typ szyfrowania, klucz szyfrowania lub algorytm szyfrowania.
Moduł odwołuje się do innego modułu z nieaktualnymi metadanymi szyfrowania parametrów.
Należy uruchomić sp_refresh_parameter_encryption podczas modyfikacji właściwości szyfrowania tabeli dla wszystkich modułów bezpośrednio lub pośrednio odwołujących się do tej tabeli. Tę procedurę składowaną można wywołać w tych modułach w dowolnej kolejności, bez konieczności uprzedniego odświeżenia wewnętrznego modułu przez użytkownika przed przejściem do jego wywołujących.
sp_refresh_parameter_encryption nie ma wpływu na żadne uprawnienia, właściwości rozszerzone ani SET opcje skojarzone z obiektem.
Aby odświeżyć wyzwalacz DDL na poziomie serwera, wykonaj tę procedurę składowaną z kontekstu dowolnej bazy danych.
Uwaga / Notatka
Wszelkie sygnatury skojarzone z obiektem są porzucane po uruchomieniu polecenia sp_refresh_parameter_encryption.
Permissions
Wymaga uprawnień ALTER do modułu oraz uprawnień REFERENCES do dowolnych typów zdefiniowanych przez użytkownika w środowisku CLR oraz kolekcji schematów XML, do których odwołuje się obiekt.
Gdy określony moduł jest wyzwalaczem DDL na poziomie bazy danych, wymaga ALTER ANY DATABASE DDL TRIGGER uprawnień w bieżącej bazie danych.
Gdy określony moduł jest wyzwalaczem DDL na poziomie serwera, wymaga CONTROL SERVER uprawnień.
W przypadku modułów zdefiniowanych za pomocą klauzuli EXECUTE ASIMPERSONATE uprawnienie jest wymagane dla określonego podmiotu zabezpieczeń. Ogólnie rzecz biorąc, odświeżanie obiektu nie zmienia jego EXECUTE AS podmiotu zabezpieczeń, chyba że moduł został zdefiniowany za EXECUTE AS USER pomocą , a nazwa użytkownika podmiotu zabezpieczeń jest teraz rozpoznawana dla innego użytkownika niż w momencie utworzenia modułu.
Przykłady
Poniższy przykład tworzy tabelę i procedurę odwołującą się do tabeli, konfiguruje funkcję Always Encrypted, a następnie demonstruje zmianę tabeli i uruchomienie sp_refresh_parameter_encryption procedury.
Najpierw utwórz początkową tabelę i procedurę składowaną odwołującą się do tabeli.
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
Następnie skonfiguruj klucze 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
Na koniec zastąp kolumnę SSN zaszyfrowaną kolumną i uruchom procedurę sp_refresh_parameter_encryption , aby zaktualizować składniki 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