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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
通过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,如需转载请自行联系原作者
相关实践学习
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
27天前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
5天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
11天前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
21 2
|
17天前
|
SQL 弹性计算 数据管理
数据管理DMS产品使用合集之sql server实例,已经创建了数据库,登录时提示实例已存在,该怎么处理
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
29 1
|
28天前
|
SQL 存储 关系型数据库
关系型数据库中的SQL Server
【6月更文挑战第11天】
55 3
|
27天前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
1月前
|
SQL 存储 数据库
如何在SQLServer中创建数据库
在SQL Server中创建数据库,可通过SSMS的图形界面或T-SQL语句。在SSMS中,连接到服务器,右键“数据库”选择“新建数据库”,配置属性后点击确定。使用T-SQL,连接到服务器,编写CREATE DATABASE语句指定数据库名称、文件路径及大小信息,执行查询完成创建。确保有足够磁盘空间,并注意权限设置。
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
17 0
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
|
18天前
|
存储 机器学习/深度学习 SQL
SQLSERVER存储过程语法详解
SQLSERVER存储过程语法详解
29 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
25 0