我们可以使用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 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
proc
尽管他们确实给了我有关我的 proc 正在使用的参数的信息,但如果一个人想从信息中构建它是不够的。所以,我错过了什么?catalog views
如果可以,是否可以从 获得构建所需的所有信息?然后是哪一个?如果不是,那么在执行 a 之后,stored proc
语句 (或其他什么) 实际存储在磁盘中的哪个位置?当我打开我的并右键单击并选择一个过程时,它会在一个新的查询窗口中打开它,因此它打开时,它必须从某个地方查看以了解它的结构是什么?我怎样才能获得它?select
insert
SSMS
Modify
proc
disk/catalog views
proc