当我们大多数人想要查看SQL Server存储过程的定义时,我们启动SSMS,找到对象,右键单击并选择Modify或其他脚本选项之一。手动工作正常。
有些人也有幸获得Redgate产品的许可,这些产品使您可以搜索,比较和分析已编译的数据库对象。
但是假设我想编写台式机实用程序来分析存储过程或在SQL Server实例上编译的其他对象。旨在容纳这种软件设计的主流软件中似乎很少。
所以我的问题是:甚至有可能使用C#和现成的NuGet包连接到SQL数据库并返回将使用SSMS呈现到查询窗口中的同一DDL脚本吗?
我知道已经有很多实用程序可以满足我想要的几乎所有内容,但这是一个编程问题,而不是要求产品推荐的问题。
答案 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