原贴: https://www.mssqltips.com/sqlservertip/1414/run-same-command-on-all-sql-server-databases-without-cursors/

--This query will return a listing of all tables in all databases on a SQL instance:
DECLARE @command varchar(1000)
SELECT @command = 'USE ? SELECT name FROM sysobjects WHERE xtype = ''U'' ORDER BY name'
EXEC sp_MSforeachdb @command

--This statement creates a stored procedure in each user database that will return a listing of all users in a database, sorted by their modification date
DECLARE @command varchar(1000)SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'') BEGIN USE ? EXEC(''CREATE PROCEDURE pNewProcedure1 AS SELECT name, createdate, updatedate FROM sys.sysusers ORDER BY updatedate DESC'') END'EXEC sp_MSforeachdb @command

--This query will return a listing of all files in all databases on a SQL instance:EXEC sp_MSforeachdb 'USE ? SELECT ''?'', SF.filename, SF.size FROM sys.sysfiles SF'

查询跨库存储过程调用,没有直接的方法:

DECLARE @sql NVARCHAR(2000)='USE ? SELECT DB_NAME();
SELECT DISTINCT so.name
FROM syscomments sc
INNER JOIN sysobjects so ON sc.id=so.id
WHERE sc.TEXT LIKE ''%P_ThisIsAStoredProcedure%'''EXEC sp_MSforeachdb @sql

联合sp_MSforeachdb,SP_MSFOREACHTABLE,sp_spaceused 查询各库各表的大小:

DECLARE @sql NVARCHAR(2000)='USE ^;
--SELECT DB_NAME();
EXEC sp_spaceused;
--EXEC SP_MSFOREACHTABLE ''EXEC sp_spaceused "?"''CREATE TABLE #t
(name VARCHAR(255),ROWS BIGINT,reserved VARCHAR(20),DATA VARCHAR(20),index_size VARCHAR(20),unused VARCHAR(20)
)
EXEC sp_MSforeachtable "insert into #t exec sp_spaceused ''?''"
SELECT *,CAST(SUBSTRING(data,0,LEN(data)-2) AS float)/1024 as Data_MB FROM #t ORDER BY Data_MB desc
DROP TABLE #t
'EXEC sp_MSforeachdb @sql,'^'

查所有数据库表大小:

create table #temp1
([数据库名] varchar(50),
[数据库大小(MB)] dec (15,2),
[未分配空间(MB)] dec (15,2),
[保留(MB)] dec (15,2),
[数据(MB)] dec (15,2),
[索引(MB)] dec (15,2),
[未使用(MB)] dec (15,2))insert into #temp1
exec sp_msforeachdb
'use ?;
select db_name(),convert(dec (15,2),(convert(dec (15,2),dbsize) + convert (dec (15,2),logsize)) * 8192 / 1048576),convert(dec (15,2),(case when dbsize >= reservedpages then (convert (dec (15,2),dbsize) - convert (dec (15,2),reservedpages)) * 8192 / 1048576 else 0 end)),convert(dec (15,2),reservedpages * 8192 / 1048576.),convert(dec (15,2),pages * 8192 / 1048576.),convert(dec (15,2),(usedpages - pages) * 8192 / 1048576.),convert(dec (15,2),(reservedpages - usedpages) * 8192 / 1048576.)
FROM
(SELECT sum(convert(bigint,case when status & 64 = 0 then size else 0 end)) AS dbsize, sum(convert(bigint,case when status & 64 <> 0 then size else 0 end)) AS logsizefrom dbo.[sysfiles]
) a
LEFT JOIN
(select sum(a.total_pages) AS reservedpages,SUM(a.used_pages) AS usedpages,SUM(CASE-- XML-Index and FT-Index internal tables are not considered "data", but is part of "index_size"When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0When a.type <> 1 Then a.used_pagesWhen p.index_id < 2 Then a.data_pagesElse 0END) AS pagesfrom [sys].[partitions] p join [sys].[allocation_units] a on p.partition_id = a.container_idleft join [sys].[internal_tables] it on p.object_id = it.object_id
) b ON 1=1
'select * from #temp1 ORDER BY [数据库大小(MB)] descdrop table #temp1

查询数据库某库下所有表的所有字段

SELECT TOP 100 a.TABLE_NAME,a.COLUMN_NAME,a.DATA_TYPE,a.CHARACTER_MAXIMUM_LENGTH,b.value
from information_schema.COLUMNS as a  left join sys.extended_properties as b
on a.TABLE_NAME=OBJECT_NAME(b.major_id) and a.ORDINAL_POSITION=b.minor_id
where a.COLUMN_NAME LIKE '%parcelList%'

转载于:https://www.cnblogs.com/icyJ/p/sp_MSforeachdb.html

不用游标遍历数据库执行脚本相关推荐

  1. oracle执行命令显示2,oracle数据库执行脚本时常用命令总结

    收集了一篇oracle数据库执行脚本常用命令总结,希望给同学带来一些帮助. 1. 执行一个SQL脚本文件 代码如下 sqlplus user/pass@servicenamefile_name.sql ...

  2. postgres数据库执行脚本时,错误ERROR: unterminated quoted string at or near处理

    远程连接postgres数据库,通过psql执行执行SQL脚本 命令如下: psql -h 10.201.83.202 -p 15432 -U postgres -d fruit_tp -a -f f ...

  3. migrate-mongo实现对mongo数据库执行脚本版本控制

    描述: migrate-mongo是一个js模块,通过migrate-mongo可以实现远程操作mongodb数据库.其中执行脚本的版本控制是通过配置文件进行远程MongoDB数据库连接配置,执行时在 ...

  4. oracle执行命令显示2,Oracle数据库执行脚本常用命令小结

    1. 执行一个SQL脚本文件 复制代码 代码如下: sqlplus user/pass@servicename 或 复制代码 代码如下: SQL>start file_names 或 复制代码 ...

  5. mysql游标遍历数据库_MySQL数据库中,使用游标循环遍历_MySQL

    /* 对*dt库下的所有数据表删除docuemttype为空和documenttype为MD,PD,ET的数据: delete from 表名 where length(documenttype)&l ...

  6. 循环所有数据库执行脚本

    这里仅仅提供一个事例,抛砖引玉,如果对您起到丁点作用,那是在下的荣幸 select name into #dbname from sys.databases where name like 'edb_ ...

  7. 游标遍历所有数据库循环执行修改数据库的sql命令

    游标遍历所有数据库循环执行修改数据库的sql命令 MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历. 先来说思路: 1,首先需要查 ...

  8. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断...

    C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25. ...

  9. sqlserver2008数据库自动备份的sql脚本及使用bat命令执行脚本

    -----sql脚本 declare @fileName varchar(255) ,--定义备份文件名变量          @dbname varchar(255)--定义备份数据库名变量 dec ...

最新文章

  1. 2016 多校赛3 A 水 B 期望,规律 C 各种博弈 J 物理题,积分 K 暴力,水
  2. 环境微生物期刊—FEMS Microbiology Ecology
  3. 阿里云 域名解析和主机绑定域名
  4. java acm 母牛的故事_acm母牛的故事 的问题
  5. 【BZOJ1123】 [POI2008]BLO (tarjan)
  6. 同时生成 Release版和Debug版DLL的方法
  7. 数据质量才是数据分析的关键
  8. 深度图像确定目标距离_技术交流一种距离选通水下激光成像系统设计与实验研究...
  9. 组合数(卢卡斯定理)
  10. 本人考研的时间流程图
  11. python链接sql报错_python3.7连接sqlserver数据库失败报错20002, DB-Lib error message 20002
  12. NestJs简明教程
  13. JAVASE、JAVAEE(J2EE)、
  14. ardunio 字符串分割
  15. 复古汉字_复古和复古网页设计给您的启发
  16. Java GC的标记-清除算法【总结】
  17. java中的path是什么_什么是java path环境变量
  18. 拉线位移传感器的原理和选型注意事项
  19. 详解网络层_计算机网络
  20. 进程间通信(一)(管道文件操作)

热门文章

  1. docker创建镜像之Dockerfile
  2. c语言无线网络抓包程序,c语言实现抓包
  3. c语言编程分数判定,用C语言编程平均分数
  4. dqn在训练过程中loss越来越大_强化学习笔记:OpenAI Gym+DQN+Tensorflow2实现
  5. php获取所有url地址_PHP_php 获取完整url地址,主要是获取到地址栏的一些信 - phpStudy...
  6. mysql特有语法_MySQL 独有SQL语法汇总(一)
  7. 防止html网页被f12抓取,JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码...
  8. pytorch-alexnet-推理
  9. 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。
  10. oracle xtts 测试,XTTS 跨平台表空间迁移测试