加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – 提取SQLCLR程序集

发布时间:2020-12-12 16:50:25 所属栏目:MsSql教程 来源:网络整理
导读:我们的一个内部应用程序有一个SQLCLR程序集,目前遇到问题.开发人员在使用存储在我们的源代码管理系统中的版本重新创建问题时遇到问题,因此他怀疑某些代码可能已经发布但未上传到源代码控制.有没有办法将SQLCLR程序集提取到.dll文件中,以便他可以对其进行反向
我们的一个内部应用程序有一个SQLCLR程序集,目前遇到问题.开发人员在使用存储在我们的源代码管理系统中的版本重新创建问题时遇到问题,因此他怀疑某些代码可能已经发布但未上传到源代码控制.有没有办法将SQLCLR程序集提取到.dll文件中,以便他可以对其进行反向工程以进行分析?

解决方法

确实有一种方法 – 程序集存储在数据库的sys.assembly_files表中.从sys.assembly_files中选择所有内容并找到assembly_id,然后运行以下代码(首先更改assembly_id和SaveToFile路径):
DECLARE @IMG_PATH VARBINARY(MAX)
DECLARE @ObjectToken INT

SELECT @IMG_PATH = content FROM sys.assembly_files WHERE assembly_id = 65536

EXEC sp_OACreate 'ADODB.Stream',@ObjectToken OUTPUT
        EXEC sp_OASetProperty @ObjectToken,'Type',1
        EXEC sp_OAMethod @ObjectToken,'Open'
        EXEC sp_OAMethod @ObjectToken,'Write',NULL,@IMG_PATH
        EXEC sp_OAMethod @ObjectToken,'SaveToFile','D:SqlServerProject1.dll',2
        EXEC sp_OAMethod @ObjectToken,'Close'
        EXEC sp_OADestroy @ObjectToken

为了使其工作,您需要在SQL实例的功能的Surface Area Configuration中启用OLE自动化功能.

我从这里提取了这段代码:
http://social.msdn.microsoft.com/Forums/en/sqlnetfx/thread/1e00e656-f322-45ec-b4e0-83db748fa97a

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读