mssql sqlserver 系统存储过程”sp_MSforeachtable” 功能及使用说明简介


摘要:
下文主要讲述 sp_MSforeachtable 系统存储过程的功能简介,应用场景及举例说明



一、sp_MSforeachtable 系统存储过程的功能简介

sp_MSforeachtable:是一个系统存储过程,从mssql 6.5开始就存在于DB系统中,存在于master数据库中
sp_MSforeachtable:功能,遍历当前DB下,所有用户表,并根据相应的参数生成相应的sql脚本,并执行sql脚本
——————————-
sp_MSforeachtable参数说明:

 @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 --执行指令后的操作(类似控件的触发后的操作)
 


二、sp_MSforeachtable 系统存储过程应用场景及举例说明

sp_MSforeachtable应用场景:
sp_MSforeachtable系统存储过程,可应用于需批量处理数据表的所有操作,使用此命令,可避免我们手动生成表操作脚本。
例:

 /*打印所有的表名*/
exec sp_MsForeachtable @command1 =' print  ''?'' '
EXEC sp_MSforeachtable   @command1="print '?'",
@whereand ='and o.name like ''%903%'''  /*打印表名包含903的表名*/
/*统计所有表行数 及打印表名*/
exec sp_MsForeachtable @command1 ='select count(*) from ?  ',@command2 =' print ''?'' '
/*禁止所有表触发器*/
exec sp_MsForeachtable @command1 ='alter table ? disable trigger all ',@command2 =' print ''?'' '
/*删除所有表数据*/
exec sp_MsForeachtable @command1 ='delete from  ?',@command2 =' print ''?'' '
exec sp_MsForeachtable @command1 ='truncate table  ?',@command2 =' print ''?'' '
/*禁止所有约束*/
exec sp_MsForeachtable @command1 ='alter table ? nocheck constraint all ',@command2 =' print ''?'' '
/*启用所有约束*/
exec sp_MsForeachtable @command1 ='alter table ? check constraint all ',@command2 =' print ''?'' '
mssql_sqlserver_遍历表方法分享

mssql_sqlserver_遍历表方法分享