sql sever 屎山代码 ?存储过程怎么找 存储过程内容
前言
由于之前供应商开发数据仓库,目前已经是屎山代码了,没有文档。 需要整理表是从那个存储过程来的,就很麻烦。 我的方法
一、Sql Server 存储过程怎么找 存储过程内容
使用 syscomments 表和 sysobjects
在SQL Server中,syscomments
表和sysobjects
表是用于存储有关数据库对象(如存储过程、触发器、视图等)的元数据信息的系统表。以下是关于这两个表的简要说明:
-
syscomments
表:syscomments
表存储了数据库对象的文本定义,例如存储过程、触发器等的源代码。- 主要包含
text
列,该列存储对象的文本定义,通常用于存储SQL语句。 id
列与sysobjects
表中的相应对象的id
列关联,以建立对象和其文本定义之间的关系。
示例查询:
vbnetsqlCopy code SELECT id, text FROM syscomments WHERE id = OBJECT_ID('Your_Object_Name')
-
sysobjects
表:-
sysobjects
表存储了数据库中的所有对象的元数据信息,包括表、视图、存储过程、触发器等。 -
包含列如下:
id
: 对象的唯一标识符。name
: 对象的名称。type
: 对象的类型,例如存储过程、表、视图等。
示例查询:
sqlsqlCopy code SELECT id, name, xtype FROM sysobjects WHERE xtype = 'P' -- P 表示存储过程,可以根据需要更改类型条件
-
这两个表在查询和分析数据库对象的定义和元数据时非常有用。然而,需要注意的是,自SQL Server 2005版本以后,Microsoft推荐使用更现代的系统视图(例如sys.objects
、sys.sql_modules
等)来替代这些旧的系统表。
1.方法1:找存储过程和表关系代码如下(示例):
sql
SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id = obj.ID
WHERE sc.TEXT LIKE '% 存储过程内容中的内容%'
AND TYPE = 'P' and xtype='P'
比如找 insert 表名
SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id = obj.ID
WHERE sc.TEXT LIKE '%insert 表名%'
AND TYPE = 'P' and xtype='P'
2.方法2:右击表找到查看依赖关系:也可以找到,
总结:
最后就是搞了excel 写文档,然后重建数仓。这个是痛苦的过程。 用存储过程的技术+sql job 做数仓已经是很老的技术,个人不建议使用。 后面我们用Kattle