如何在SQL Server 2008中解密存储过程

时间:2011-10-06 05:41:16

标签: sql sql-server-2008

我有一个使用WITH ENCRYPTION选项加密的存储过程。现在我要解密该程序。我已经尝试了一个名为“Decryptsp2K”的存储过程,该过程在本论坛中为SQL 2000提供:http://forums.asp.net/t/1516587.aspx/1

但它删除了我的存储过程,而不是解密它。

有没有办法在SQL Server 2008中解密存储过程?

5 个答案:

答案 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'
  1. imageval的{​​{1}}列中检索加密的对象文本,并将其存储在变量sys.sysobjvalues
  2. @ContentOfEncryptedObject计算@ObjectDataLength
  3. 使用DATALENGTH(@ContentOfEncryptedObject)/2字符生成ALTER PROCEDURE语句,填充到正确的长度(在本例中为-
  4. 执行ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------语句,从ALTER检索加密版本并将其存储在变量sys.sysobjvalues中,然后回滚更改。
  5. 使用@ContentOfFakeEncryptedObject字符生成填充为正确长度的CREATE PROCEDURE语句(在本例中为-)。这将存储在变量CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
  6. 然后循环遍历@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