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

时间:2013-04-09 15:34:34

标签: sql-server stored-procedures ssms

我们可以使用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中进行查询,以获取有关表格的完整信息,所有列,如果它们可以为空或其他所有列({{1} },primary key等等,并且根据这些信息,我可以轻松地,完整地(包括约束和一切)重新创建该表。听起来这可能是一个坏主意,并且可能有其他方法可以做到这一点,但这不是一个好的做法的问题。我想知道的是,是否有包含check 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
虽然他们确实给了我关于我的procs正在使用的params的信息,但是如果想要从信息中构造select * from INFORMATION_SCHEMA.PARAMETERS select * from sys.parameters 那就不够了。那么,我错过了什么?如果是,可以从proc获得构建所需的所有信息吗?那么哪一个?如果没有,那么在符合catalog views后,语句(stored procselect或其他什么)实际存储在磁盘中?当我打开insert并右键单击并在某个程序中选择SSMS时,它会在新的查询窗口中打开Modify,因此它打开时,它必须从proc中某处知道disk/catalog views的结构是什么?我怎样才能获得它?

1 个答案:

答案 0 :(得分:1)

试着在这里查看:

select * from sys.all_sql_modules

您还可以获取存储过程的脚本,如下所示:

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

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

  

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

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