SQL With Encryption - Mã hoá trong SQL server
Bài này tôi sẽ minh họa cho bạn cách dùng lệnh With Encryption.
Thường chúng ta sẽ có thủ tục lưu trữ, truy vấn dữ liệu là các Store Procedure, các Function, các Trigger và các View. Tôi sẽ lần lượt minh họa cách dùng With Encryption cho các thủ tục này.
1. Mã hóa Store Procedure
Giả sử tôi có 1 Store (chưa mã hóa) như sau:
CREATE Proc sTB_Category_SelectByID @CateID int As Begin Select tc.CateID, tc.ParentID, tc.CateName, tc.Link,tc.Status From TB_Category tc WHERE tc.CateID=@CateID End
Khi bạn Execute store này thì mọi người đều có thể xem, sửa được. Giờ bạn muốn bảo mật Store này không cho người khác xem sửa bạn dùng thêm lệnh With Encryption như sau:
CREATE Proc sTB_Category_SelectByID @CateID int WITH encryption As Begin Select tc.CateID, tc.ParentID, tc.CateName, tc.Link,tc.Status From TB_Category tc WHERE tc.CateID=@CateID End
Đối với Store, Trigger, View thì khi bạn dùng tree hiển thị danh sách Srore thì sẽ có biểu tượng cái khóa nhỏ và bạn và người khác không thể xem, sửa được
2. Function
Đối với hàm bạn sử dụng WITH encryption như ví dụ sau đây:
CREATE FUNCTION fTinhTong ( @a int, @b int ) RETURNS int WITH encryption AS Begin RETURN @a+@b End
3. Trigger
Với Trigger bạn cũng sử dụng tương tự như ví dụ sau đây (Và khi trigger có dùng WITH encryption cũng sẽ có biểu tượng cái khóa giống như Store)
CREATE TRIGGER [dbo].[TB_Category_InsertTrigger] ON [dbo].[TB_Category] WITH encryption FOR INSERT AS UPDATE child SET Decen = ISNULL(parent.Decen + 1,0), Depth = ISNULL(parent.Depth,'/') + LTrim(Str(child.CateID)) + '/' FROM TB_Category child INNER JOIN inserted i ON i.CateID=child.CateID LEFT OUTER JOIN TB_Category parent ON child.ParentID=parent.CateID
4. Với View
Với View bạn dùng như sau
CREATE VIEW vTopCategory WITH encryption AS SELECT TOP 20 tc.CateID, tc.CateName, tc.Link, tc.Status FROM TB_Category tc
Một điều quan trọng bạn cần chú ý đó là khi bạn dùng With Encryption thì kể cả bạn cũng không thể xem, sửa được chính vì vậy trước khi thực hiện ta cần backup database hoặc lưu lại Scrip để làm bản dự phòng cho mình
Không có nhận xét nào:
Đăng nhận xét