MS Sql Server对象创建/更改脚本

时间:2010-03-12 22:33:47

标签: sql sql-server-2008 system-tables

在Sql Server中,当您选择修改SP或UDF时,它会在查询窗口中加载alter query alter query。这些查询是否可以在系统表中访问,以便我可以在某处存储alter语句?看起来syscomments有一些对象但不是全部。

由于

2 个答案:

答案 0 :(得分:1)

不要使用syscomments ,因为syscomments.textnvarchar(4000),因此会截断任何更长的内容。

使用sys.sql_modules因为definitionnvarchar(max),所以不会截断长代码。

使用它来查看给定过程,视图或功能的文本:

SELECT * FROM sys.sql_modules WHERE object_id=object_id('YourProcedure')

使用它来获取任何过程,视图或功能的名称,类型和文本:

SELECT DISTINCT
    o.name AS Object_Name,o.type_desc, m.definition
    FROM sys.sql_modules        m 
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.object_id=object_id('CPT_SP_IRA_ComboBox_IncidentStatus')

答案 1 :(得分:-1)

我不完全确定您的要求,但您可以通过以下查询查看存储过程:

SELECT SO.Type,SO.Name,SC.Text
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
ORDER BY SO.Name

如果您使用不同的对象类型,请查看sys.sysobjects以了解不同的类型。