【问题标题】:MS Sql Server Object Creation / Alter ScriptMS Sql Server 对象创建/更改脚本
【发布时间】:2010-03-12 22:33:47
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    不要使用 syscmets,因为 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')
    

    【讨论】:

      【解决方案2】:

      我不完全确定您在问什么,但您可以通过以下查询查看存储过程:

      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 以了解不同类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-05
        • 2018-06-02
        • 2021-01-03
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多