sp_MSforeachtable使用方法
1)说明
系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从ms sql 6.5开始。
存放在SQL Server的MASTER数据库中。
2)参数说明:
@command1 nvarchar(2000), --第一条运行的SQL指令
@replacechar nchar(1) = N'?', --指定的占位符号
@command2 nvarchar(2000)= null, --第二条运行的SQL指令
@command3 nvarchar(2000)= null, --第三条运行的SQL指令
@whereand nvarchar(2000)= null, --可选条件来选择表
@precommand nvarchar(2000)= null, --执行指令前的操作(类似控件的触发前的操作)
@postcommand nvarchar(2000)= null --执行指令后的操作(类似控件的触发后的操作)
3)举例
--统计数据库里每个表的详细情况
exec sp_MSforeachtable @command1="sp_spaceused '?'"
--获得每个表的记录数和容量:
EXEC sp_MSforeachtable @command1="print '?'",
@command2="sp_spaceused '?'",
@command3= "SELECT count(*) FROM ? "
--获得所有的数据库的存储空间:
EXEC sp_MSforeachdb @command1="print '?'",
@command2="sp_spaceused "
--检查所有的数据库
EXEC sp_MSforeachdb @command1="print '?'",
@command2="DBCC CHECKDB (?) "
--更新PUBS数据库中已t开头的所有表的统计:
EXEC sp_MSforeachtable @whereand="and name like 't%'",
@replacechar='*',
@precommand="print 'Updating Statistics.....' print ''",
@command1="print '*' update statistics * ",
@postcommand= "print''print 'Complete Update Statistics!'"
--删除当前数据库所有表中的数据
sp_MSforeachtable @command1='Delete from ?'
sp_MSforeachtable @command1 = "TRUNCATE TABLE ?"
4)参数@whereand的用法
@whereand参数在存储过程中起到指令条件限制的作用,具体的写法如下:
@whereend,可以这么写 @whereand=' AND o.name in (''Table1'',''Table2'',.......)'
例如:我想更新Table1/Table2/Table3中NOTE列为NULL的值
sp_MSforeachtable @command1='Update ? Set NOTE='''' Where NOTE is NULL',@whereand=' AND o.name in (''Table1'',''Table2'',''Table3'')'
5)"?"在存储过程的特殊用法,造就了这两个功能强大的存储过程
这里"?"的作用,相当于DOS命令中、以及我们在WINDOWS下搜索文件时的通配符的作用。
转载于:https://www.cnblogs.com/gguozhenqian/p/4063546.html
sp_MSforeachtable使用方法相关推荐
- MSSQL外键约束以及sp_MSforeachtable使用方法
1.通过图形界面的方式添加外键: 其中SNO和CNO在SC表中是外键,而在各自的表中则是主键: 同理添加CNO外键 2.通过写SQL语句实现添加外键 输入如下图中的SQL 语句: --建立SC表中的S ...
- SQLServer禁用、启用外键约束
---启用or禁用指定表所有外键约束 alter table PUB_STRU NOCHECK constraint all; alter table PUB_STRU CHECK constrain ...
- 数据库中表内容的删除总结(总有你需要的)
1.对数据库中的表批量清空删除 (慎用) use PL123 EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp ...
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群
作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...
- Java面试题大全2021版
一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- 清空SQL Server数据库中所有表数据的方法(转)
清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...
- 【转载】查看MSSQL数据库每个表占用的空间大小的方法
sp_spaceused 显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法 sp_spaceused [[@objname =] 'objn ...
- [翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb
SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb 您是否曾经写过代码来处理数据库中的所有表?处理一个 SQL Server实例中的所有数据 ...
- 查询SQL Server中表占用的空间方法
第一种方法: exec sp_MSforeachtable "exec sp_spaceused '?'" 第二种方法: select object_name(id) tablen ...
最新文章
- Creational模式之Builder模式
- 将公用文件夹从Exchange2010迁移到 Exchange 2013
- Oracle编程入门经典 第3章 建立以及管理用户和表
- 思科无线服务器,【CISCO wlan】思科无线网络_3-基本配置v2.pdf
- 如何为我们的程序编写开发文档——Java文档注释
- 【安装记录】CPU-Z
- 双层玻璃窗的功效模型matlab,《数学模型》课程设计--三层玻璃窗的保暖功效.doc...
- Linux系统tomcat修改端口
- 基于Multisim的555时基电路
- wps下一步快捷键_WPS快捷键大全
- 查询水果价格(15 分)
- AcWing 292 炮兵阵地
- bzoj 4484 [Jsoi2015]最小表示——bitset
- 微信内隐藏的一个修复功能
- Linux的markdown笔记软件,Markdown工具满天飞,哪一款适合用印象笔记的你?
- 904. 水果成篮(数组、滑动窗口)
- qt creator插入代码块快速注释snippets代码片段的功能
- HDFS强制退出安全模式
- 怎么设置计算机自己休眠断网,win10系统怎么设置待机断网 待机断网设置方法
- 陀螺精选第1期:BCH生死战,谁能存活?
热门文章
- 地址做域名时不能加端口_当你访问XXX网站时,从访问到内容返回呈现,中间发生了什么?...
- 海天 oracle,Oracle执行计划详解
- mysql 中文 length_mysql length()中文长度一些问题整理
- int类型年月怎么区间查询_LeetCode 力扣官方题解 | 57.插入区间
- ansys的kbc_ansys求解过程
- 【新功能】MaxCompoute禁止Full Scan功能开放
- C# 加载 SQLite DLL问题
- 程序员如何选择第二门语言
- phantomjs使用说明
- LVS三种工作模式介绍对比和十种调度算法介绍