Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server目录视图是否有助于生成存储过程?_Sql Server_Stored Procedures_Ssms - Fatal编程技术网

Sql server sql server目录视图是否有助于生成存储过程?

Sql server sql server目录视图是否有助于生成存储过程?,sql-server,stored-procedures,ssms,Sql Server,Stored Procedures,Ssms,我们可以使用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和

我们可以使用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
中进行这样的查询,以获得有关表的完整信息、所有列(如果它们可为空或不可为空)以及其他所有信息(
主键
检查约束
等),并且根据这些信息,我可以轻松地重新创建该表,整体(包括约束和所有内容)。这听起来可能是个坏主意,也许还有其他方法可以做到这一点,但这不是一个好的做法与否的问题。我想知道的是,是否有一个目录包含有关存储过程的全部信息

假设我有一个这样的过程

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
我有没有办法查询
系统目录
,了解我的
Proc\u作者的结构
,以便重建它?我知道我可以查询
sys.procedures
,但它只显示琐碎的细节,我还运行了

select * from INFORMATION_SCHEMA.PARAMETERS
select * from sys.parameters
虽然它们确实给了我有关我的程序正在使用的参数的信息,但如果想要从信息中构造
proc
,这是不够的。那么,我错过了什么?是否可以从
目录视图中获取构造所需的所有信息,如果是?那是哪一个?如果没有,则在执行
存储过程
后,语句(
选择
插入
或其他什么)实际存储在磁盘中的什么位置?当我打开我的
SSMS
并右键单击并在一个过程中选择
Modify
时,它会在一个新的查询窗口中打开
proc
,因此它必须从
磁盘/目录视图中的某个位置查看
以了解该
proc
的结构?我怎样才能获得它?

试试看这里:

select * from sys.all_sql_modules
您还可以获取存储过程的脚本,如下所示:

select object_definition(object_id('[dbo].[proc_Author]'))
使用这些选项时,请检查您在Management Studio中返回文本的选项:

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

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

尝试在此处查看:

select * from sys.all_sql_modules
您还可以获取存储过程的脚本,如下所示:

select object_definition(object_id('[dbo].[proc_Author]'))
使用这些选项时,请检查您在Management Studio中返回文本的选项:

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

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