当前位置: 首页 > news >正文

自动在多个DB上执行同一条sql语句

DECLARE @dbs VARCHAR(1000) DECLARE @dbName VARCHAR(15) DECLARE @idx INT DECLARE @sql VARCHAR(5000) SET @dbs ='dbName1,dbName2' --设置所有需要查询的DB, 并用逗号隔开 WHILE (LEN(@dbs) > 0) BEGIN SET @idx = CHARINDEX(',', @dbs) IF (@idx > 0) BEGIN SET @dbName = SUBSTRING(@dbs, 0, @idx) SET @dbs = SUBSTRING(@dbs, @idx + 1, LEN(@dbs) -@idx) END ELSE SET @dbName = @dbs SET @dbName=LTRIM(RTRIM(@dbName)) PRINT '----' + @dbName + '----' --在多个db上执行的sql语句 begin-- --必须用 dbName.dbo.tableName 这种形式, exec('use '+@dbName)是错误的 SET @sql = 'SELECT * FROM @dbName.dbo.TableName' --在多个db上执行的sql语句 end-- SET @sql=REPLACE(@sql,'@dbName',@dbName) --执行替换, 好处是避免在上一步sql语句复杂时使用多个+号 EXEC(@sql) --执行动态sql --PRINT(@sql) --用于调试, 判断动态生成的sql语句是否正确 IF (@idx <= 0) BREAK END --要做的事情只有两个 --1.枚举所有的db名称, 赋给@dbs, 可用下面的语句 -- Select Name FROM Master..SysDatabases order by Name -- 如果你觉得还不省事, 上面的用文本方式得到的db名称不够方便, 里面的是回车而不是逗号, 可用下面的语句来实现 DECLARE @dbsTemp VARCHAR(5000) SET @dbsTemp='db01 --将上面得到的db复制过来 db02' SET @dbsTemp=REPLACE(replace(@dbsTemp,char(10),''),char(13),',') --10. 换行, 13.回车 PRINT @dbsTemp --2.构建sql, 测试完成一条后, 在表名前加上 "@dbName.dbo. " , 赋给@sql

相关文章:

  • this指向
  • ASCII码表
  • 扫雷游戏制作过程(C#描述):第三节、雷区绘制
  • 使用SQL中的ROW_NUMBER()和while循环对每一行执行操作
  • 关于FPGA随笔
  • 取得所有DB的名称, 形成一行, 并以逗号分隔
  • windows下安装JDK1.8和eclipse
  • LightOJ 1414 February 29(闰年统计+容斥原理)
  • C++ 日志类库 log4cplus
  • Spark Mllib里如何将trainDara训练数据的分类特征字段转换为数值字段(图文详解)...
  • 给Eclipse安装eUML2插件以及可能出现的依赖错误解决方案
  • junit import org.junit.Test 报错
  • SQL Server2005与SQLServer2008并存时, 怎样连接到2008
  • 微信小程序开发之带搜索记录的搜索框
  • 怎样启用sa用户登录
  • [笔记] php常见简单功能及函数
  • angular2 简述
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • github从入门到放弃(1)
  • interface和setter,getter
  • java2019面试题北京
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • node和express搭建代理服务器(源码)
  • Redis在Web项目中的应用与实践
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 软件开发学习的5大技巧,你知道吗?
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 优秀架构师必须掌握的架构思维
  • FaaS 的简单实践
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (003)SlickEdit Unity的补全
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (Forward) Music Player: From UI Proposal to Code
  • (libusb) usb口自动刷新
  • (汇总)os模块以及shutil模块对文件的操作
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (篇九)MySQL常用内置函数
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @test注解_Spring 自定义注解你了解过吗?
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ linux ] linux 命令英文全称及解释
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116