博客
关于我
对SQL数据表和数据库进行迭代操作
阅读量:428 次
发布时间:2019-03-06

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

以下是优化后的内容:

本文将介绍SQL Server中两个实用但未在官方在线教科书中提到的存储过程。这些过程在处理特定任务时非常方便,例如判断存储空间大小、行数以及用户表索引等。第一个存储过程sp_MSForEachDB可对感兴趣的服务器上的每个数据库执行三条命令。@command1、@command2和@command3分别指定要执行的命令,而@precommand和@postcommand则用于循环开始和结束时执行的操作。

需要注意的是,当使用sp_MSForEachDB执行命令时,每个命令集会作为一个批处理对数据库进行处理,即使命令集中只包含一条命令也会这样处理。这对于将捕获结果输出到文本而不是标准结果集表非常有用。要实现这一功能,可以通过菜单中的“查询”按钮,选择“输出结果”并设置为“输出到文本”或使用快捷键[Ctrl]T。

以下是一个示例代码:exec sp_MSForEachDB@command1 = "use ? exec sp_SpaceUsed"。运行该命令后,输出可能如下:

数据库名   数据库大小   未分配空间大小------------------ ------------------ ------------------master         5.25 MB   1.26 MBreserved data 2808 KB 1144 KB 1080 KB 584 KB

第二个存储过程sp_MSForEachTable接受7个参数:@command1、@replacechar、@command2、@command3、@whereand、@precommand和@postcommand。@replacechar用于替换问号,@whereand则用于添加Where或OrderBy条件。通过对参数进行命名,可以跳过传递空值的需求。

以下是一个示例:exec sp_MSForEachTable@command1 = "Print '?'", @command2 = "select count(*) from ?", @whereand = "ORDER BY 1"。运行该命令后,输出结果如下:

[HumanResources].[Department]-----------16[HumanResources].[Employee]-----------290[HumanResources].[EmployeeAddress]-----------290[HumanResources].[EmployeeDepartmentHistory]-----------296

这些存储过程在实际应用中非常实用,能够帮助数据库管理员高效处理日常任务。

转载地址:http://tbruz.baihongyu.com/

你可能感兴趣的文章
Netty源码—8.编解码原理二
查看>>
Netty源码解读
查看>>
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Netty相关
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
NetworkX系列教程(11)-graph和其他数据格式转换
查看>>
Networkx读取军械调查-ITN综合传输网络?/读取GML文件
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
ng 指令的自定义、使用
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + Spring Boot 实现负载均衡
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>