我们可以使用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 proc
,select
或其他什么)实际存储在磁盘中?当我打开insert
并右键单击并在某个程序中选择SSMS
时,它会在新的查询窗口中打开Modify
,因此它打开时,它必须从proc
中某处知道disk/catalog views
的结构是什么?我怎样才能获得它?
答案 0 :(得分:1)
试着在这里查看:
select * from sys.all_sql_modules
您还可以获取存储过程的脚本,如下所示:
select object_definition(object_id('[dbo].[proc_Author]'))
使用这些时,请检查您在Management Studio中返回文本的选项:
工具 - >选项 - >查询结果 - > SQL Server - >结果到文本 - > 每列中显示的最大字符数
将返回的文本数量有限制。您可能需要将其BCP到文件中才能查看整个文件。