批量删除数据库的SQL语句
来源:互联网 发布:支持向量机算法实例 编辑:程序博客网 时间:2024/05/24 08:33
由于项目需要,每次运行case的时候都需要创建数据库。虽然每次执行结束都会删除,但是不保证每次都能删除成功(这里有许多原因,我就不列举了)。所以我写了个脚本去批量删除数据库。首先为确保我们的数据库是有用的,不被错删除的。所以就必须先备份在删除。
备份数据库:
DECLARE @name VARCHAR(50) -- database name DECLARE @path VARCHAR(256) -- path for backup files DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name SET @path = 'D:\ABC\Backup\' SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) DECLARE db_cursor CURSOR FOR SELECT name FROM MASTER.dbo.sysdatabases WHERE name IN ('E1DB_ABC','Scheduler') OPEN db_cursor FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0 BEGIN SET @fileName = @path + @name + '_' + @fileDate + '.BAK' BACKUP DATABASE @name TO DISK = @fileName FETCH NEXT FROM db_cursor INTO @name END CLOSE db_cursor DEALLOCATE db_cursor
方法1:
DECLARE @path VARCHAR(256) -- path for backup files DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name SET @path = 'D:\Backup\' SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) DECLARE db_cursor CURSOR FOR SELECT name FROM MASTER.dbo.sysdatabases WHERE name NOT IN ('master','model','msdb','tempdb','ReportServer' OPEN db_cursor DECLARE @databasename VARCHAR(50) -- database name DECLARE @databaseCount int =0FETCH NEXT FROM db_cursor INTO @databasename WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @statement nvarchar(50)print 'dropping databse: '+@databaseNameexec('use masteralter database '+@databaseName+' set single_user with rollback immediatedrop database '+@databaseName)set@databaseCount=@databaseCount+1 FETCH NEXT FROM db_cursor INTO @databasename END print 'dropped databse count: '+CONVERT(VARCHAR(12),@databaseCount )CLOSE db_cursor DEALLOCATE db_cursor
方法2:
declare @dbToDelete table(name varchar(50))declare @databaseName varchar(100)insert into @dbToDelete values('ABC')insert into @dbToDelete values('DEF')insert into @dbToDelete values('GH')insert into @dbToDelete select name from Master..SysDatabases where name like 'ABC%'while exists(select name from @dbToDelete)beginselect top 1 @databaseName=name from @dbToDeleteif exists(select * from sys.databases where name = @databaseName)beginprint 'dropping databse: '+@databaseNameexec('use masteralter database '+@databaseName+' set single_user with rollback immediatedrop database '+@databaseName)enddelete from @dbToDelete where name = @databaseNameend
1 0
- 批量删除数据库的SQL语句
- 批量删除表的sql语句
- mybatis批量删除的sql语句拼接
- 对于MSSQL数据库被插入的木马可用SQL语句批量删除的方法。
- SQL 数据库 批量删除 注入的脚本
- 如何写高效的批量插入和删除sql语句 -sql语句 删除主键
- 如何写高效的批量插入和删除sql语句
- Mysql中批量删除相同表前缀的sql语句
- MySQL中批量删除指定前缀表的sql语句
- mysql批量删除多条记录的sql语句
- 批量生成sql语句批量插入数据库
- mysql批量删除指定前缀的表,批量修改表名的SQL语句
- mysql批量删除指定前缀的表,批量修改表名的SQL语句
- mysql批量删除指定前缀的表,批量修改表名的SQL语句
- SQL批量删除语句,SQL删除所有数据
- 删除SQL数据库中相同记录的SQL语句
- 数据库被批量注入解决办法(SQL语句)
- sql语句的批量更新
- shell函数返回字符串
- push_back使用方法
- sqlserver 存储过程调试
- jquery 消除冒泡实现选项框效果
- AOSP---JDK版本管理
- 批量删除数据库的SQL语句
- C++文件读写详解(ofstream,ifstream,fstream)
- TCP/IP:拥塞算法与流量控制算法 学习小结
- 测试
- 如何查看Linux下系统占用的资源(top、free、uptime)
- Cg Profiles
- 操作系统总结
- oracle备份
- 外观模式facade