SP_MSFOREACHDB
获得所有实例下数据库名称
EXEC sp_MSForEachDB 'PRINT "?"'
sp_MSforeachtable
USE MASTER
GO
SP_HELPTEXT sp_MSforeachtable
这个系统存储过程有7个参数:
@command1 nvarchar(2000), --第一条运行的T-SQL指令
@replacechar nchar(1) = N'?', --指定的占位符号
@command2 nvarchar(2000) = null,--第二条运行的T-SQL指令
@command3 nvarchar(2000) = null, --第三条运行的T-SQL指令
@whereand nvarchar(2000) = null, --可选条件来选择表
@precommand nvarchar(2000) = null, --在表前执行的指令
@postcommand nvarchar(2000) = null --在表后执行的指令
获取库下面所有表和行数
EXEC sp_MSForEachTable 'PRINT ''?''; SELECT ''?'' as [TableName],
COUNT(*) AS [RowCount] FROM ?;'
查看所有表行数,和表空间信息:
EXEC sp_MSForEachTable 'PRINT ''?''; SELECT ''?'' as [TableName],
COUNT(*) AS [RowCount] FROM ?;EXEC SP_SPACEUSED "?"'
更新所有表统计信息:
sp_msforeachtable 'update statistics ?'
获得所有的数据库的存储空间
exec sp_MSforeachdb 'select "?";EXEC sp_spaceused'
所有数据库信息
EXEC sp_MSforeachdb 'USE ? EXEC sp_helpfile;'
更改所有数据库的拥有者为'sa'
EXEC sp_MSforeachdb 'USE ?; EXEC sp_changedbowner ''sa'''
检查数据库完整性
EXEC sp_MSforeachdb 'use ?; DBCC CHECKDB'
删除数据库所有表数据(小心操作)
EXEC sp_MSforeachTABLE 'TRUNCATE TABLE ?'
EXEC sp_MSforeachTABLE "DELETE FROM ?"