sql sever 屎山代码 ?存储过程怎么找 存储过程内容

举报
小Tomkk 发表于 2024/02/26 20:55:13 2024/02/26
【摘要】 sql sever ,存储过程怎么找 存储过程内容

# 前言

由于之前供应商开发数据仓库,目前已经是屎山代码了,没有文档。
需要整理表是从那个存储过程来的,就很麻烦。
我的方法

# 一、Sql Server 存储过程怎么找 存储过程内容

使用  syscomments  表和 sysobjects

在SQL Server中,`syscomments`表和`sysobjects`表是用于存储有关数据库对象(如存储过程、触发器、视图等)的元数据信息的系统表。以下是关于这两个表的简要说明:

1.  `syscomments`表:

    -   `syscomments`表存储了数据库对象的文本定义,例如存储过程、触发器等的源代码。
    -   主要包含`text`列,该列存储对象的文本定义,通常用于存储SQL语句。
    -   `id`列与`sysobjects`表中的相应对象的`id`列关联,以建立对象和其文本定义之间的关系。

    示例查询:


    sqlCopy code
    SELECT id, text
    FROM syscomments
    WHERE id = OBJECT_ID('Your_Object_Name')



1.  `sysobjects`表:

    -   `sysobjects`表存储了数据库中的所有对象的元数据信息,包括表、视图、存储过程、触发器等。

    -   包含列如下:

        -   `id`: 对象的唯一标识符。
        -   `name`: 对象的名称。
        -   `type`: 对象的类型,例如存储过程、表、视图等。

    示例查询:

    sqlCopy code
    SELECT id, name, xtype
    FROM sysobjects
    WHERE xtype = 'P' -- P 表示存储过程,可以根据需要更改类型条件

这两个表在查询和分析数据库对象的定义和元数据时非常有用。然而,需要注意的是,自SQL Server 2005版本以后,Microsoft推荐使用更现代的系统视图(例如`sys.objects`、`sys.sql_modules`等)来替代这些旧的系统表。

1.方法1:找存储过程和表关系代码如下(示例):

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:右击表找到查看依赖关系:也可以找到,


微信图片_20240213154150.png

# 总结:

最后就是搞了excel 写文档,然后重建数仓。这个是痛苦的过程。
用存储过程的技术+sql job 做数仓已经是很老的技术,个人不建议使用。
后面我们用Kettle 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。