之前寫過一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便
SQLPROMPT5.3對各種加密對象的解密測試
SQL2005解密已經被加密的存儲過程
昨天ahdung童鞋介紹了這個工具給我,非常感謝他
dbForge SQL Decryptor這個工具的軟件公司是devart,也是跟redgate公司一樣,制作各種數據庫輔助工具和編程工具的一家比較出名的軟件公司
官網:http://www.devart.com/
軟件下載地址:
http://www.devart.com/dbforge/sql/sqldecryptor/download.html
http://files.cnblogs.com/lyhabc/sqldecryptor.rar
這個工具是免費的,不用破解,安裝完畢,立刻可以用
在SQLSERVER數據庫工具當中還提供了另外一個免費工具:dbForge SQL Azure Backup
http://www.devart.com/dbforge/sql/
介紹
先說題外話:大家可以把這些第三方的工具放到外部工具里,這樣只要打開SSMS,就不用在桌面找這些工具的圖標再打開
相應工具了,速度可以快一倍,我就是這樣做的,打開了SSMS就不用到桌面找這個軟件,找那個軟件
界面使用WPF編寫,還是挺好的
登錄界面做得挺有意思,可以使用傳統的連接方式,也可以使用DAC連接或者自己寫連接字符串
我們按照這篇文章創建好各種加密對象:SQLPROMPT5.3對各種加密對象的解密測試
包括視圖,存儲過程,函數,觸發器
功能比較簡單,界面跟SSMS差不多
就三個功能
選中你的數據庫,然后右鍵-》Decryption Wizard..
他會列出你所選擇要顯示的解密對象類型,分別有:存儲過程、用戶定義函數、視圖、表觸發器、數據庫觸發器
你可以將解密的各種對象的腳本保存到同一個腳本中或者每個對象一個腳本,我這里選擇都保存在同一個腳本中
點擊Execute之后,在桌面就會生成一個腳本.sql文件
把腳本拖到SSMS
1 USE pratice 2 GO 3 4 SET ANSI_NULLS, QUOTED_IDENTIFIER ON 5 GO 6 /***************創建加密的存儲過程*******************/ 7 Create Procedure CPP_test_Encryption 8 with encryption 9 AS10 ----可以換成任意的邏輯11 execute CPP_test_Original12 GO13 14 SET ANSI_NULLS, QUOTED_IDENTIFIER ON15 GO16 CREATE FUNCTION [dbo].f_get_page(@page_num BINARY(6))17 RETURNS VARCHAR(11)18 WITH ENCRYPTION19 AS20 BEGIN21 RETURN(CONVERT(VARCHAR(2),(CONVERT(INT,SUBSTRING(@page_num,6,1))*POWER(2,8))+22 (CONVERT(INT,SUBSTRING(@page_num,5,1))))+':'+23 CONVERT(VARCHAR(11),24 (CONVERT(INT,SUBSTRING(@page_num,4,1))*POWER(2,24))+25 (CONVERT(INT,SUBSTRING(@page_num,3,1))*POWER(2,16))+26 (CONVERT(INT,SUBSTRING(@page_num,2,1))*POWER(2,8))+27 (CONVERT(INT,SUBSTRING(@page_num,1,1)))))28 END29 GO30 31 SET ANSI_NULLS, QUOTED_IDENTIFIER ON32 GO33 CREATE VIEW aa34 WITH ENCRYPTION35 AS36 SELECT * FROM [dbo].[Users]37 GO38 39 SET ANSI_NULLS, QUOTED_IDENTIFIER ON40 GO41 CREATE TRIGGER cc42 ON [dbo].[Users]43 WITH ENCRYPTION44 FOR INSERT45 AS RAISERROR(500001,16,10)46 GO47 48 SET ANSI_NULLS, QUOTED_IDENTIFIER ON49 GO50 Create Procedure creat_test_Encryption 51 with encryption52 AS53 SELECT TOP 100 * FROM [dbo].[test13]54 55 GO
而Decrypt in-place(alter objects)就是把各種對象中的with encryption去掉,不知道f_get_page這個函數會失敗
執行Decrypt in-place(alter objects)前
1 SET ANSI_NULLS, QUOTED_IDENTIFIER ON2 GO3 ALTER Procedure creat_test_Encryption 4 with encryption5 AS6 SELECT TOP 100 * FROM [dbo].[test13]7 GO
執行執行Decrypt in-place(alter objects)后
1 SET ANSI_NULLS, QUOTED_IDENTIFIER ON2 GO3 ALTER Procedure creat_test_Encryption 4 AS5 SELECT TOP 100 * FROM [dbo].[test13]6 GO
你會看到執行Decrypt in-place(alter objects)后,相當于去掉了with encryption
除了那個用戶定義函數之后其他的解密出來了,其實你可以drop掉那個函數,然后用解密出來的腳本重新創建函數就可以了
視圖,觸發器都沒有鎖小圖標了
其他功能
Show DDL script就是把對象的創建腳本顯示出來,而Decrypt in-place我就不說了
注意,下面的界面是在dbForge SQL Decryptor工具中的界面,不是在SSMS中的界面,雖然這個工具的界面跟SQL2012 的SSMS界面很像
總結
DBA有了這個工具之后,就不怕開發人員隨意加密他們自己寫的函數、存儲過程、觸發器了
也能減輕DBA的負擔
如有不對的地方,歡迎大家拍磚o(∩_∩)o
新聞熱點
疑難解答