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使用方法相关推荐

  1. MSSQL外键约束以及sp_MSforeachtable使用方法

    1.通过图形界面的方式添加外键: 其中SNO和CNO在SC表中是外键,而在各自的表中则是主键: 同理添加CNO外键 2.通过写SQL语句实现添加外键 输入如下图中的SQL 语句: --建立SC表中的S ...

  2. SQLServer禁用、启用外键约束

    ---启用or禁用指定表所有外键约束 alter table PUB_STRU NOCHECK constraint all; alter table PUB_STRU CHECK constrain ...

  3. 数据库中表内容的删除总结(总有你需要的)

    1.对数据库中的表批量清空删除 (慎用) use PL123 EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp ...

  4. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  5. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  6. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  7. 【转载】查看MSSQL数据库每个表占用的空间大小的方法

    sp_spaceused 显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法 sp_spaceused [[@objname =] 'objn ...

  8. [翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb

    SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb 您是否曾经写过代码来处理数据库中的所有表?处理一个 SQL Server实例中的所有数据 ...

  9. 查询SQL Server中表占用的空间方法

    第一种方法: exec sp_MSforeachtable "exec sp_spaceused '?'" 第二种方法: select object_name(id) tablen ...

最新文章

  1. Creational模式之Builder模式
  2. 将公用文件夹从Exchange2010迁移到 Exchange 2013
  3. Oracle编程入门经典 第3章 建立以及管理用户和表
  4. 思科无线服务器,【CISCO wlan】思科无线网络_3-基本配置v2.pdf
  5. 如何为我们的程序编写开发文档——Java文档注释
  6. 【安装记录】CPU-Z
  7. 双层玻璃窗的功效模型matlab,《数学模型》课程设计--三层玻璃窗的保暖功效.doc...
  8. Linux系统tomcat修改端口
  9. 基于Multisim的555时基电路
  10. wps下一步快捷键_WPS快捷键大全
  11. 查询水果价格(15 分)
  12. AcWing 292 炮兵阵地
  13. bzoj 4484 [Jsoi2015]最小表示——bitset
  14. 微信内隐藏的一个修复功能
  15. Linux的markdown笔记软件,Markdown工具满天飞,哪一款适合用印象笔记的你?
  16. 904. 水果成篮(数组、滑动窗口)
  17. qt creator插入代码块快速注释snippets代码片段的功能
  18. HDFS强制退出安全模式
  19. 怎么设置计算机自己休眠断网,win10系统怎么设置待机断网 待机断网设置方法
  20. 陀螺精选第1期:BCH生死战,谁能存活?

热门文章

  1. 地址做域名时不能加端口_当你访问XXX网站时,从访问到内容返回呈现,中间发生了什么?...
  2. 海天 oracle,Oracle执行计划详解
  3. mysql 中文 length_mysql length()中文长度一些问题整理
  4. int类型年月怎么区间查询_LeetCode 力扣官方题解 | 57.插入区间
  5. ansys的kbc_ansys求解过程
  6. 【新功能】MaxCompoute禁止Full Scan功能开放
  7. C# 加载 SQLite DLL问题
  8. 程序员如何选择第二门语言
  9. phantomjs使用说明
  10. LVS三种工作模式介绍对比和十种调度算法介绍