几个功能强大的分析SQL Server数据库结构的存储过程-阿里云开发者社区

开发者社区> 数据库> 正文

几个功能强大的分析SQL Server数据库结构的存储过程

简介:
通过SQL事件分析工具,跟踪SBO的数据库事务进程,发现以下几个数据库系统存储过程被频繁的使用:
  1. sp_tables,检索SQL Server数据库中的数据表。数据表分为系统表(SYSTEM TABLE,如sysObjects, sysColumns等),用户数据表(TABLE,SBO出于业务处理的需要而建立的数据表,一共900多张)和视图(VIEW,SBO出于业务处理的需要,一共创建了20个视图)。用户表通数据库用户相关,所有具有创建数据表的用户都有创建数据表的权利。在SBO中,通常带参数调用sp_tables,指定数据表类型为TABLE,指定数据表所有者为DBO,即数据库拥有者的用户数据表。SBO中的典型调用方式:exec sp_tables N'CINF', N'DBO', NULL, N'''TABLE''',检索数据库中是否存在数据表创建者为DBO数据表名为CINF的用户数据表。
  2. sp_columns,检索指定数据表的数据结构,数据表自然包括系统表、用户表和视图。这个存储过程至少需要一个参数--数据表,当然也可以指定表创建者、表或视图限定符,也可以指定显示哪些表字段。通过这个存储过程能够解析出数据库中的数据表的数据结构,包括字段名、字段类型、字段长度、数据精度、是否允许空值等等。数据类型以两种方式显示:SQL_DATA_TYPE和SS_DATA_TYPE,前者是SQL语言的通用类型标示,后者是SQL Server的数据类型标示,比如nvarchar类型,前者的标示为-9,而后者的类型标示为39;datatime前者为9,后者为111。SBO中的典型调用方式:exec sp_columns N'CINF', N'%', NULL, NULL, @ODBCVer = 3,检索表CINF支持版本ODBC协议为3的数据结构。
  3. sp_statistics,检索制定表的主键和索引。同样的,这个存储过程也至少需要数据表参数,当然也可以指定表创建者、表或视图限定符,也可以指定显示哪些表索引,是否只检索唯一性索引等。这个存储过程显示的指定数据表的索引列表及索引结构。SBO中的典型调用方式:exec sp_statistics N'CINF', N'dbo', NULL, N'%', N'N', N'Q',查询数据表DBO.CINF的所有性索引。
  4. sp_executesql,这是一个功能强大的用语指定SQL语句的系统存储过程,用以执行可以多次重用或动态生成的T-SQL 语句或批处理。其特点是动态性和可重用:言其动态,是可以将SQL语句特别是调用参数动态编写,而不需要事前固定,这一点上类似于C/C++中的函数动态参数支持;自然了,这个执行语句可以写入到内存中,在需要调用的时候动态传递不固定的参数序列,从而完成SQL语句和事务的执行。而动态替换 sp_executesql 中的参数,与使用 EXECUTE 语句执行字符串相比,有下列优点:
  • sp_executesql 中,T-SQL 语句的实际文本在两次执行之间未改变,所以查询优化器应该能将第二次执行中的 T-SQL 语句与第一次执行时生成的执行计划匹配。这样,SQL Server 不必编译第二条语句。
  • T-SQL 字符串只生成一次。
  • 整型参数按其本身格式指定。不需要转换为 Unicode。

本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/40495,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章