博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几个功能强大的分析SQL Server数据库结构的存储过程
阅读量:5749 次
发布时间:2019-06-18

本文共 1462 字,大约阅读时间需要 4 分钟。

通过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,如需转载请自行联系原作者
你可能感兴趣的文章
[Unity3d]Shader 着色器 学习前了解知识
查看>>
维辰超市:借助云商城成功转型新零售
查看>>
SQL中使用WITH AS提高性能 使用公用表表达式(CTE)简化嵌套SQL
查看>>
oracle 强行杀掉一个用户连接
查看>>
让你快速上手的Glide4.x教程
查看>>
浮动和清除(闭合)浮动
查看>>
LR录制脚本时IE打不开的原因
查看>>
Sublime Text 2.0.2,Build 2221注册码
查看>>
最长递增子序列 动态规划
查看>>
原生CSS设置网站主题色—CSS变量赋值
查看>>
python分类
查看>>
程序是如何执行的(一)a=a+1
查看>>
BZOJ - 3578: GTY的人类基因组计划2
查看>>
【http】post和get请求的区别
查看>>
时间助理 时之助
查看>>
英国征召前黑客组建“网络兵团”
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
centos5.9使用RPM包搭建lamp平台
查看>>
Javascript String类的属性及方法
查看>>