可以使用C#以编程方式反编译存储过程

时间:2019-05-09 18:01:57

标签: c# sql sql-server

当我们大多数人想要查看SQL Server存储过程的定义时,我们启动SSMS,找到对象,右键单击并选择Modify或其他脚本选项之一。手动工作正常。

有些人也有幸获得Redgate产品的许可,这些产品使您可以搜索,比较和分析已编译的数据库对象。

但是假设我想编写台式机实用程序来分析存储过程或在SQL Server实例上编译的其他对象。旨在容纳这种软件设计的主流软件中似乎很少。

所以我的问题是:甚至有可能使用C#和现成的NuGet包连接到SQL数据库并返回将使用SSMS呈现到查询窗口中的同一DDL脚本吗?

我知道已经有很多实用程序可以满足我想要的几乎所有内容,但这是一个编程问题,而不是要求产品推荐的问题。

2 个答案:

答案 0 :(得分:4)

您可以通过sys.sql_modules

看一下代码

示例

SELECT [schema_name] = OBJECT_SCHEMA_NAME([object_id]) 
      ,[object_name] = OBJECT_NAME([object_id]) 
      ,*
 FROM  sys.sql_modules
--WHERE  OBJECT_SCHEMA_NAME([object_id]) = 'dbo'
--  AND OBJECT_NAME([object_id]) = '<<some store procedure or UDF>>'

答案 1 :(得分:1)

您可以将sp_helptext 'sp_name'用于存储过程。参见here