SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

简介:    在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用。

  

在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用。下面的知识多是自己总结,有一些参考了MSDN。

  

sp_help

有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了。使用它可以查询出整个数据库中所有对象的相关信息。直接运行sp_help结果如下图1,上面是数据库对象,包含系统自定义的表,视图等等,下面是自定义数据类型
img_bef8a5387a8dda66dad948bf5a30f147.png

图1

如果我只想找到某一中数据类型的长度,精度等信息可以运行sp_help datatypename,如下图2

img_69c31341ffc3ca5361da0dd97155885d.png

图2

如果我想找出某一个表的相关信息可以运行sp_help tablename,如下图3

img_e8bf701f9a471b4df3f3d083d3acfc0d.png

图3

如图运行结果的第一个查出表基本信息,第二个查出所有的列,第三个查出主键信息,第四个表查出列的标识,第五个返回所在的文件组信息。

如果我想查出一个存储过程的相关信息可以像上面一样直接使用sp_help procname,如下图4

img_87e2f4871003266d402ec8b50770d6d1.png

图4

这里需要注意有时候需要使用单引号将数据库对象包含起来。第一个表查出存储过程的名称等信息,第二个查出参数信息。

  

sp_helptext

有时候我们需要查出存储过程长的什么样子的,虽然可以点击Script Stored Procedure as,CREATE To,New Query Editor Window找到,如图5

img_921a3bc3639ff63b669faed40100359b.png

图5

但是这样显得有点罗嗦,如果有很多的存储过程我们不可能很快地点击选中我们想要查的哪一个。如果使用sp_helptext procname就可以很快地找到这些信息,如图6

img_454c8b59d74b431967f521d6acf4d55e.png

图6

如图,默认是使用grid显示文本,也可以使用文本格式,只要点击 Result to text就可以显示文本格式。如果你还是觉得这样不爽,关键字没有颜色,你可以选中所有文本复制到SQL文本编辑器中。同样你也可以使用sp_helptext查出数据库中的视图,函数,自定义计算列等对象的文本内容。

  

sp_helpdb

一般我们拿到客户的数据库服务器端时候,我们首选要搞清楚这个服务器上有多少个数据库,分别是那些用户创建的等等信息,你也许会直接打开这个数据库用鼠标点击查看,但是如果有很多的数据库就不那么方便了,这个时候直接运行sp_helpdb就很容易查出来了。如下图7。

img_ab26253defcc156a2618ab58cc220da3.png

图7

如图查询出了我的数据库软件中所有的数据库信息。如果我想知道某一个数据库的详细信息,可以使用sp_helpdb dbname查询,如图8。

img_e86c026721b92ae4ba0fb813b0e03035.png

图8

如图第一个表查出这个数据库的基本信息,第二个表查询得到这个数据库的数据库文件信息等。其他还有很多的数据库引擎存储过程例如:

sp_helpconstraint可以查出当前数据库中所遇的约束信息。

sp_helpextendedproc可以查询所有的扩展存储过程,以及所属的dll的名称,这个在上一个随笔:SQL点滴15—在SQL Server 2008中调用C#程序中提到过。

sp_helpfile和sp_helpdb dbname的效果差不多,查询当前数据库的数据库文件信息。

sp_helpfilegroup返回当前数据库的数据库文件关联的文件组的信息。

Sp_helpindex tablename返回表或视图中的索引的信息。

Sp_helplanguage返回数据库中安装的语言信息。

Sp_helpserver显示当前已经连接的所有服务器的信息。

Sp_helpsort返回服务器默认的排序规则。

  

Sys.objects

数据库开发和application开发有些不同,没有一个像CC,VSS,SVN一样的管理工具来管理代码,因为所有的代码都存放在数据库中,不要跟踪。假设我们要等待数据库设计人员建好表或存储过程后导入数据,但是迟迟不见动静,这时候我们就可以看看数据库中所有的自定义对象,按照最后更新时间来排序。运行下面的语句:select * from sys.objects where type in('U','V','P') order by modify_date

这个语句查出数据库中的所有的用户表,视图,存储过程并按时间排序,这样就可以看到别人最近添加,修改了那些数据库对象。Sys.objects不包含触发器,触发器在sys.triggers中。类似的还有sys.tables,sys.views等等。

  

information_schema

如果我们想快速查询在这个数据库中是否包含address这样的字样的列,并查出它在那个数据库中,那个表中,它的数据类型信息等,这时候使用information_schema这个架构信息就很有用了,如下图9。

img_4a609da89fa5da8c1d90d1b10a16c0d7.png

图9

相同的在information_schema这个架构中还有很多的信息例如:

information_schema.tables返回表信息,

information_schema.check_constraints返回check约束信息,

information_schema.views返回视图信息,

information_schema.routines返回存储过程信息,还有很多这里不再列举。

  

总之SQL Server数据库提供了丰富的对象统计信息供我们使用,上面只是我经常用到的一部分,在这里抛砖引玉了。

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
11月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
1002 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
Cloud Native 关系型数据库 分布式数据库
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
9月前
|
SQL 容灾 安全
云时代SQL Server的终极答案:阿里云 RDS SQL Server如何用异地容灾重构系统可靠性
在数字化转型的浪潮中,数据库的高可用性已成为系统稳定性的生命线。作为经历过多次生产事故的资深开发者,肯定深知传统自建SQL Server架构的脆弱性——直到遇见阿里云 RDS SQL Server,其革命性的异地容灾架构彻底改写了游戏规则。
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
854 11
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
537 158
|
8月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。