2013-04-09 52 views
1

我们可以使用sql-server's目录视图轻松生成/重新创建表格。我可以运行查询,如SQL Server目录视图帮助生成存储过程?

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 

虽然他们给我关于我的特效使用PARAMS信息,其不够的,如果一个人想建立从信息proc。那么,我错过了什么?如果是,可以从catalog views获得构建所需的所有信息吗?那么哪一个?如果不是,那么在遵循stored proc之后,声明(select,insert或其他什么)实际存储在磁盘中?当我打开我的SSMS并右键点击并选择Modify时,它会在一个新的查询窗口中打开proc,因此它打开后,它必须从disk/catalog views的某个位置查看,以了解此proc的结构?我如何获得它?

回答

1

试看看这里:

select * from sys.all_sql_modules 

你也可以拿到剧本像这样的存储过程:

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

当使用这些,请检查您在Management Studio中恢复文本选项:

工具 - >选项 - >查询结果 - > SQL Server - >结果到文本 - > Maxim um每列中显示的字符数

将返回的文本数量是有限制的。您可能需要BCP才能查看整个文件。