笔记185 系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历某个数据库的每个表和遍历DBMS管理下的每个数据库(查询数据库所有表的记录总数)
笔记185 系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历某个数据库的每个表和遍历DBMS管理下的每个数据库(查询数据库所有表的记录总数)
1 --系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历某个数据库的每个表和遍历DBMS管理下的每个数据库(查询数据库所有表的记录总数) 2 EXEC sys.sp_MSforeachtable @command1 = N'', -- nvarchar(2000) 3 @replacechar = N'', -- nchar(1) 4 @command2 = N'', -- nvarchar(2000) 5 @command3 = N'', -- nvarchar(2000) 6 @whereand = N'', -- nvarchar(2000) 7 @precommand = N'', -- nvarchar(2000) 8 @postcommand = N'' -- nvarchar(2000) 9 10 EXEC sys.sp_MSforeachdb @command1 = N'', -- nvarchar(2000) 11 @replacechar = N'', -- nchar(1) 12 @command2 = N'', -- nvarchar(2000) 13 @command3 = N'', -- nvarchar(2000) 14 @precommand = N'', -- nvarchar(2000) 15 @postcommand = N'' -- nvarchar(2000) 16 17 --查询数据库所有表的记录总数 18 USE GPOSDB 19 CREATE TABLE #temp(tablename VARCHAR(255),rowcnt INT) 20 EXEC sys.sp_MSforeachtable 'insert into #temp select "?" ,count(*) from ?' --加双引号的解释见下面 21 SELECT tablename,rowcnt FROM #temp ORDER BY tablename 22 DROP TABLE #temp 23 24 --sql查询所有用户表的列表,详细信息,如:记录数,表占用大小等 25 EXEC sp_MSforeachtable 'EXECUTE sp_spaceused "?"' --因为sp_spaceused的objname参数是字符串所以问号要加双引号不知道为什麽不能加单引号 @objname = N'' 26 27 --EXEC sys.sp_spaceused @objname = N'', -- nvarchar(776) 28 -- @updateusage = '' -- varchar(5)
https://raresql.com/2014/02/11/sql-server-how-to-filter-databases-in-sp_msforeachdb/
sp_MSforeachdb过滤某些数据库
EXEC sp_MSforeachdb @command1='IF ''?'' IN (''AdventureWorks2012'',''AdventureWorks2012_test'') BEGIN SELECT name,object_id,modify_date FROM ?.sys.tables WHERE [name]=''Person'' END'
实例下各个数据库数据分析2
EXEC sys.[sp_MSforeachdb] @command1 = N'IF ''?'' NOT IN (''master'',''tempdb'',''model'',''msdb'',''ReportServer'',''ReportServerTempDB'',''distribution'') BEGIN USE ? IF OBJECT_ID(''tempdb..#TablesSizes'') IS NOT NULL DROP TABLE #TablesSizes CREATE TABLE #TablesSizes ( TableName sysname , Rows BIGINT , reserved VARCHAR(100) , data VARCHAR(100) , index_size VARCHAR(100) , unused VARCHAR(100) ) DECLARE @sql NVARCHAR(MAX) SELECT @sql = COALESCE(@sql, '''') + ''INSERT INTO #TablesSizes execute sp_spaceused '''''' + QUOTENAME(TABLE_SCHEMA,''[]'') + ''.''+ QUOTENAME(Table_Name, ''[]'') +'''''''' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' EXECUTE (@SQL) alter table #TablesSizes add [DBNAME] VARCHAR(100) null update #TablesSizes set [DBNAME] = ''?'' SELECT * FROM #TablesSizes ORDER BY Rows DESC END' -- nvarchar(2000)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!