1

我们可以使用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

我可以像这样查询 insys.objects和/或 insys.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如果可以,是否可以从 获得构建所需的所有信息?然后是哪一个?如果不是,那么在执行 a 之后,stored proc语句 (或其他什么) 实际存储在磁盘中的哪个位置?当我打开我的并右键单击并选择一个过程时,它会在一个新的查询窗口中打开它,因此它打开时,它必须从某个地方查看以了解它的结构是什么?我怎样才能获得它?selectinsertSSMSModifyprocdisk/catalog viewsproc

4

1 回答 1

1

试试看这里:

select * from sys.all_sql_modules

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

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

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

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

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

于 2013-04-09T15:47:42.700 回答