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