Di SQL Server, Anda dapat mengenkripsi tampilan saat pertama kali membuatnya, atau Anda dapat mengubahnya nanti untuk menyertakan enkripsi.
Untuk membuat tampilan dengan T-SQL, Anda menggunakan CREATE VIEW
sintaksis. Untuk mengenkripsinya, tambahkan WITH ENCRYPTION
argumen.
Anda juga dapat menggunakan argumen yang sama untuk mengenkripsi tampilan yang ada saat menggunakan ALTER VIEW
.
Teks tampilan terenkripsi tidak langsung terlihat di tampilan katalog mana pun. Oleh karena itu, definisi tampilan tidak dapat dilihat oleh pengguna yang tidak memiliki akses ke tabel sistem atau file database.
Menggunakan WITH ENCRYPTION
juga mencegah tampilan dipublikasikan sebagai bagian dari replikasi SQL Server.
Contoh 1 – Membuat Tampilan Terenkripsi
Berikut ini contoh membuat tampilan terenkripsi.
CREATE VIEW dbo.v_Cats WITH ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Bagian untuk mengenkripsinya adalah WITH ENCRYPTION
. Saya bisa saja menghapus argumen itu jika saya tidak ingin mengenkripsinya.
Setelah membuat tampilan itu, sekarang ketika saya menggunakan sys.sql_modules
tampilan katalog sistem untuk melihat definisinya, saya mendapatkan NULL.
SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID('dbo.v_Cats');
Hasil:
+--------------+ | definition | |--------------| | NULL | +--------------+
Saya mendapatkan hasil yang sama dengan sys.syscomments
(usang) tampilan katalog.
SELECT text FROM sys.syscomments WHERE id = OBJECT_ID('v_Cats');
Hasil:
+--------+ | text | |--------| | NULL | +--------+
Saya mendapatkan hasil yang serupa, terlepas dari metode T-SQL mana yang saya gunakan untuk mencoba mendapatkan definisi tampilan.
Dan inilah pesan kesalahan yang saya dapatkan di Azure Data Studio ketika saya mencoba membuat skrip tampilan:
No script was returned when scripting as Create on object View
Dan saya akan mendapatkan pesan serupa jika saya mencoba melihatnya di SSMS, DBeaver, atau perangkat lunak manajemen basis data GUI lainnya.
Contoh 2 – Tambahkan Enkripsi ke Tampilan yang Ada
Jika Anda ingin mengenkripsi tampilan yang ada, gunakan ALTER VIEW
dengan definisi yang sama. Dengan kata lain, saya dapat mengambil contoh pertama, dan mengganti CREATE
dengan ALTER
.
ALTER VIEW dbo.v_Cats WITH ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Ini jelas mengasumsikan bahwa definisi tampilan lainnya persis sama dengan tampilan yang ada.
Cara termudah untuk memastikan bahwa Anda menggunakan definisi yang sama adalah dengan menggunakan alat GUI Anda untuk membuat skrip tampilan yang ada menggunakan opsi "Skrip sebagai Alter", jika ada. Jika tidak, Anda dapat menggunakan “Script as Create”, lalu ketika definisi muncul, ubah CREATE
dengan ALTER
.
Jika Anda hanya memiliki antarmuka baris perintah, Anda dapat menanyakan sys.sql_modules
view untuk mendapatkan definisi yang ada (seperti pada contoh sebelumnya). Anda kemudian dapat menyalin definisi dan mengganti CREATE
dengan ALTER
.
Setelah selesai, Anda dapat menambahkan WITH ENCRYPTION
dan jalankan lagi.
Contoh 3 – Menambahkan Beberapa Atribut
Enkripsi hanyalah salah satu dari beberapa atribut yang dapat Anda sertakan dalam definisi tampilan Anda. Jika Anda perlu menentukan beberapa atribut, pisahkan dengan koma.
Misalnya, jika Anda ingin menggunakan enkripsi dan Anda ingin menentukan pengikatan skema, maka Anda harus menambahkan ini sebagai daftar yang dipisahkan koma.
ALTER VIEW dbo.v_Cats WITH ENCRYPTION, SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO