Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2016 (13.x) dan versi yang
lebih baru Azure SQL Database
Azure SQL Managed Instance
Memperbarui metadata Always Encrypted untuk parameter prosedur tersimpan yang tidak terikat skema yang ditentukan, fungsi yang ditentukan pengguna, tampilan, pemicu DML, pemicu DDL tingkat database, atau pemicu DDL tingkat server yang ditentukan dalam database saat ini.
sp_refresh_parameter_encryption
[ @name = ] N'name'
[ , [ @namespace = ] { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER } ]
[ ; ]
Argumen
[ @name = ] N'name'
Nama prosedur tersimpan, fungsi yang ditentukan pengguna, tampilan, pemicu DML, pemicu DDL tingkat database, atau pemicu DDL tingkat server. @name adalah nvarchar(776), tanpa default. @name tidak dapat menjadi prosedur tersimpan common language runtime (CLR) atau fungsi CLR. @name tidak boleh terikat skema. @name bisa menjadi pengidentifikasi multi-bagian, tetapi hanya dapat merujuk ke objek dalam database saat ini.
[ @namespace = ] N'namespace'
Kelas modul yang ditentukan.
@namespace adalah nvarchar(20), dengan default OBJECT. Saat @name adalah pemicu DDL, @namespace diperlukan. Input yang valid adalah DATABASE_DDL_TRIGGER dan SERVER_DDL_TRIGGER.
Mengembalikan nilai kode
0 (berhasil) atau angka bukan nol (kegagalan).
Keterangan
Metadata enkripsi untuk parameter modul dapat menjadi kedaluarsa, jika:
Properti enkripsi kolom dalam tabel referensi modul, telah diperbarui. Misalnya, kolom dihilangkan dan kolom baru ditambahkan dengan nama yang sama, tetapi jenis enkripsi, kunci enkripsi, atau algoritma enkripsi yang berbeda.
Modul mereferensikan modul lain dengan metadata enkripsi parameter yang kedaluarsa.
Saat properti enkripsi tabel dimodifikasi, sp_refresh_parameter_encryption harus dijalankan untuk modul apa pun secara langsung atau tidak langsung merujuk tabel. Prosedur tersimpan ini dapat dipanggil pada modul tersebut dalam urutan apa pun, tanpa mengharuskan pengguna untuk terlebih dahulu me-refresh modul dalam sebelum pindah ke pemanggilnya.
sp_refresh_parameter_encryption tidak memengaruhi izin apa pun, properti yang diperluas, atau SET opsi yang terkait dengan objek.
Untuk me-refresh pemicu DDL tingkat server, jalankan prosedur tersimpan ini dari konteks database apa pun.
Catatan
Tanda tangan apa pun yang terkait dengan objek dihilangkan saat Anda menjalankan sp_refresh_parameter_encryption.
Izin
ALTER Memerlukan izin pada modul dan REFERENCES izin pada jenis yang ditentukan pengguna CLR dan koleksi skema XML yang direferensikan oleh objek.
Ketika modul yang ditentukan adalah pemicu DDL tingkat database, memerlukan ALTER ANY DATABASE DDL TRIGGER izin dalam database saat ini.
Ketika modul yang ditentukan adalah pemicu DDL tingkat server, memerlukan CONTROL SERVER izin.
Untuk modul yang ditentukan dengan EXECUTE AS klausa, IMPERSONATE izin diperlukan pada prinsipal yang ditentukan. Umumnya, me-refresh objek tidak mengubah prinsipalnya EXECUTE AS , kecuali modul didefinisikan dengan EXECUTE AS USER dan nama pengguna prinsipal sekarang diselesaikan ke pengguna yang berbeda dari pada saat modul dibuat.
Contoh
Contoh berikut membuat tabel dan prosedur yang mereferensikan tabel, mengonfigurasi Always Encrypted, lalu menunjukkan perubahan tabel dan menjalankan sp_refresh_parameter_encryption prosedur.
Pertama-tama buat tabel awal dan prosedur tersimpan yang merujuk pada 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
Kemudian siapkan kunci 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
Terakhir, ganti kolom SSN dengan kolom terenkripsi, dan jalankan sp_refresh_parameter_encryption prosedur untuk memperbarui komponen 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