如何在Powershell中获取SQL存储过程的内容?

时间:2009-02-16 12:36:49

标签: sql-server stored-procedures powershell

我讨厌在树视图中探索代码和数据库结构,我更喜欢使用像Powershell这样的东西。我在SQL中需要做的大部分工作都在探索,即查看表中的列或特定存储过程的作用。

查看表列就像ls'ing表的列目录一样简单,但是如何获取存储过程的内容?

2 个答案:

答案 0 :(得分:7)

如果你想在Sql Server 2008上运行它,那么here is a Cmdlet可以帮助你。

如果您使用的是Sql Server 2005,那么这里有page with a script来帮助您解决此问题。

[编辑] 您可以使用SP sp_helptext查看所需存储过程的内容。

答案 1 :(得分:3)

他们的sproc文本存在于数据字典表中sys.sql_modules.另外,this Stackoverflow post有一个数据字典逆向工程脚本(除其他外)从该表中获取视图定义的文本 - 逆向工程的sproc定义大致相同。

检索存储过程的程序文本的最小脚本如下所示:

select m.definition
  from sys.objects o
  join sys.sql_modules m
    on o.object_id = m.object_id
  join sys.schemas s
    on s.schema_id = o.schema_id
 where s.name = 'foo'   -- Schema name
   and o.name = 'bar'   -- Sproc name