Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mengenkripsi Tampilan di SQL Server

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016 :Penyempurnaan OLTP Dalam Memori

  2. Bagaimana menjalankan prosedur tersimpan dalam program C#

  3. Transaksi Terdistribusi pada Server Tertaut antara sql server dan mysql

  4. Bagaimana DB_NAME() Bekerja di SQL Server

  5. Menggunakan Excel VBA untuk menjalankan kueri SQL