【问题标题】:sql server catalog view to help generate stored procedure?sql server 目录视图帮助生成存储过程?
【发布时间】:2013-04-09 15:34:34
【问题描述】:

我们可以使用sql-server's 目录视图轻松地生成/重新创建表。我可以运行像

这样的查询
select * from INFORMATION_SCHEMA.TABLES -- Get all the table names

找到这样的列..

select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Publishers' -- Get the cols for publisher table

我可以在sys.objects 和/或sys.foreign_keys 中进行这样的查询,以获取有关表、所有列、是否可为空以及其他所有信息的完整信息(primary keycheck constraints 等.),并且鉴于这些信息,我可以轻松地重新创建该表的全部内容(包括约束和所有内容)。这听起来可能是个坏主意,也许还有其他方法可以做到这一点,但这不是一个好习惯与否的问题。我想知道的是,有没有包含stored procedure(s)的全部信息的目录?

假设我有一个这样的过程

ALTER PROCEDURE [dbo].[proc_Author]
    -- Add the parameters for the stored procedure here
    @Flag INT = 1,
    @AuthorName NVARCHAR(50) = '',
    @AuthorId int = 0,
    @Address NVARCHAR(50) = ''
AS
BEGIN

    IF (@Flag = 1)
    -- INSERTS INTO TABLE DATA --
        BEGIN
            INSERT INTO Authors VALUES (@AuthorName, @Address);

        END

    ELSE IF (@Flag = 2)
        -- DELETES THE AUTHOR --
        BEGIN
            DELETE FROM Authors
            Where AuthorID = @AuthorId
        END

    END

我有什么方法可以查询system catalog 并知道我的Proc_Author 的结构以便我可以重建它吗?我知道我可以查询sys.procedures,但它只显示琐碎的细节,我也跑了

select * from INFORMATION_SCHEMA.PARAMETERS
select * from sys.parameters

虽然他们确实给了我有关我的 proc 正在使用的参数的信息,但如果想要从信息中构造 proc 是不够的。所以,我错过了什么?如果可以,是否可以从catalog views 获得构建所需的所有信息?然后是哪一个?如果不是,那么在遵循stored proc 之后,语句(selectinsert 或其他)实际存储在磁盘中的位置是什么?当我打开我的SSMS 并右键单击并在一个过程中选择Modify 时,它会在一个新的查询窗口中打开proc,所以它打开时,它必须从disk/catalog views 的某个地方查看到知道这个proc 的结构是什么吗?如何获得?

【问题讨论】:

    标签: sql-server stored-procedures ssms


    【解决方案1】:

    试试看这里:

    select * from sys.all_sql_modules
    

    您还可以像这样获取存储过程的脚本:

    select object_definition(object_id('[dbo].[proc_Author]'))
    

    使用这些时,请检查您在 Management Studio 中返回文本的选项:

    工具 -> 选项 -> 查询结果 -> SQL Server -> 结果转文本 -> 每列显示的最大字符数

    返回的文本数量是有限制的。您可能需要将其 BCP 输出到一个文件中才能查看整个内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2020-12-19
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多