標籤:style blog http io ar color os 使用 sp
原文:批量解密SQLSERVER資料庫中的各種對象的工具dbForge SQL Decryptor
批量解密SQLSERVER資料庫中的各種對象的工具dbForge SQL Decryptor2.1.11
之前寫過一篇文章,使用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
批量解密SQLSERVER資料庫中的各種對象的工具dbForge SQL Decryptor