我有一个使用WITH ENCRYPTION选项加密的存储过程。现在我要解密该程序。我已经尝试了一个名为“Decryptsp2K”的存储过程,该过程在本论坛中为SQL 2000提供:http://forums.asp.net/t/1516587.aspx/1
但它删除了我的存储过程,而不是解密它。
有没有办法在SQL Server 2008中解密存储过程?
答案 0 :(得分:22)
SQL Server Pro文章"Decrypt SQL Server Objects"仍可在SQL Server 2008中使用。
您需要通过DAC连接。请参阅the download中的文件“Decrypt SQL 2005存储过程,函数,触发器,views.sql”。
总结一下它为以下存储过程定义执行的步骤
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
imageval
的{{1}}列中检索加密的对象文本,并将其存储在变量sys.sysobjvalues
@ContentOfEncryptedObject
计算@ObjectDataLength
。DATALENGTH(@ContentOfEncryptedObject)/2
字符生成ALTER PROCEDURE
语句,填充到正确的长度(在本例中为-
)ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
语句,从ALTER
检索加密版本并将其存储在变量sys.sysobjvalues
中,然后回滚更改。@ContentOfFakeEncryptedObject
字符生成填充为正确长度的CREATE PROCEDURE
语句(在本例中为-
)。这将存储在变量CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
然后循环遍历@ContentOfFakeObject
并使用以下@i = 1 to @ObjectDataLength
计算一次解密一个字符的定义。
XOR
<强>更新强>
保罗怀特写了一篇非常好的文章,详细介绍了 为什么上面的工作,并提供了另一种方法 依靠改变对象:The Internals of
WITH ENCRYPTION
答案 1 :(得分:6)
如果您想解密程序或任何其他加密对象,请查看ApexSQL Decrypt。
这是一个免费的独立工具,可以选择将其集成到SSMS中,预览原始DDL脚本,以及创建Alter或Create解密脚本。
从独立工具,您可以连接到多个服务器并一次解密多个对象。
dbForge SQL Decryptor是另一种可以在这种情况下帮助你的工具。
答案 2 :(得分:3)
许多旧版工具停止使用SQL Server 2005+。请注意,您必须使用Dedicated Admin Connection
快速搜索显示了几个选项。
答案 3 :(得分:1)
解密SQL SERVER的存储过程
您可以使用第三方工具解密加密的存储过程。
下载该工具 - :这是免费软件
https://www.devart.com/dbforge/sql/sqldecryptor/download.html
答案 4 :(得分:0)
dbForge Sql Decryptor 帮助我解密了加密的存储过程。 详细信息可用here