几个功能强大的分析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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
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
相关文章
|
3月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
5月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
249 3
|
2月前
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
61 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
246 7
|
2月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
146 11
|
4月前
|
SQL Linux 数据库
【YashanDB知识库】崖山数据库Outline功能验证
本文来自YashanDB官网,主要测试了数据库优化器在不同场景下优先使用outline计划的功能。测试环境包括相同版本新增数据、绑定参数执行、单机主备架构以及数据库版本升级等场景。通过创建表、插入数据、收集统计信息和创建outline等步骤,验证了在各种情况下优化器均能优先采用存储的outline计划。测试结果表明,即使统计信息失效或数据库版本升级,outline功能依然稳定有效,确保查询计划的一致性和性能优化。详情可见[原文链接](https://www.yashandb.com/newsinfo/7488286.html?templateId=1718516)。
【YashanDB知识库】崖山数据库Outline功能验证
|
4月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
101 16
|
4月前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
4月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
116 4
|
4月前
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常