笔记55 SQLSERVER加密存储过程
1 --SQLSERVER加密存储过程
2 --注意:加密存储过程前应该备份原始存储过程,且加密应该在部署到生产环境前完成!!
3 --存储过程的内容不会被轻易看到(虽然解密也是有可能的)。应用这个,我们可以对某些关键的存储过程进行加密。但此时,存储过程仍然能被execute、alter和drop。
4
5 USE pratice
6 go
7
8 /**********测试表*****************/
9 SET ANSI_PADDING ON
10 GO
11 CREATE TABLE [dbo].[encrypttb_demo](
12 [id] [int] NOT NULL,
13 [submitdate] [datetime] NULL,
14 [commment] [nvarchar](200) NULL,
15 )
16 GO
17 SET ANSI_PADDING OFF
18 GO
19 Insert into [encrypttb_demo]
20 select 1024, getdate(),REPLICATE('A',100);
21 WAITFOR DELAY '00:00:04';
22 Insert into [encrypttb_demo]
23 select 1024, getdate(),REPLICATE('B',50);
24 GO
25
26 ----------------------------------------------------------------------
27 /***************创建未加密的存储过程*******************/
28 Create Procedure CPP_test_Original
29 AS
30 select * from [encrypttb_demo]
31 go
32 /***************创建加密的存储过程*******************/
33 Create Procedure CPP_test_Encryption
34 with encryption
35 AS
36 ----可以换成任意的逻辑
37 execute CPP_test_Original
38 GO
39
40
41
42 ----------------------------------------------------
43 --赋予权限的例子
44 --创建一个账号TonyZhang,并赋于该账号对该存储过程的exec权限
45 USE master
46 GO
47 CREATE LOGIN TonyZhang WITH PASSWORD = '123456'
48 USE pratice
49 GO
50 CREATE USER TonyZhang
51 GO
52 GRANT EXEC ON dbo.[CPP_DEL_ALL_Tb_Demo] to TonyZhang