1

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

谢谢

4

2 回答 2

1

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

使用sys.sql_modules因为definitionis nvarchar(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')
于 2010-03-19T14:29:40.503 回答
-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

于 2010-03-13T12:48:24.547 回答