首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取SQLCLR程序集

提取SQLCLR程序集
EN

Server Fault用户
提问于 2010-05-07 19:40:26
回答 1查看 2.4K关注 0票数 4

我们的内部应用程序之一有一个SQLCLR程序集,该程序集目前正在遇到问题。开发人员在使用我们的源代码管理系统中存储的版本重新创建该问题时遇到了问题,因此他怀疑有些代码可能已经发布,但没有上传到源代码管理中。是否有方法将SQLCLR程序集提取到.dll文件中,以便他能够反向工程它以进行分析?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2010-05-07 20:45:09

确实有一种方法--程序集存储在数据库中的sys.assembly_files表中。选择sys.assembly_files中的所有内容并找到assembly_id,然后运行以下代码(首先更改assembly_idSaveToFile路径):

代码语言:javascript
复制
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', NULL, 'D:\SqlServerProject1.dll', 2
        EXEC sp_OAMethod @ObjectToken, 'Close'
        EXEC sp_OADestroy @ObjectToken

但是,为了使其工作,您需要在SQL实例中为功能启用外围区域配置中的OLE自动化功能。

我从这里提取了这个代码:

http://social.msdn.microsoft.com/Forums/en/sqlnetfx/thread/1e00e656-f322-45ec-b4e0-83db748fa97a

票数 8
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/139703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档