/*******************************************
* 批量备份数据库且删除3天前的备份
*******************************************/
DECLARE @backupfile VARCHAR(1024)
DECLARE @backdesc VARCHAR(1024)
DECLARE @filename VARCHAR(1024)
DECLARE @path VARCHAR(1024)
DECLARE @dbname VARCHAR(1024)
DECLARE @extension_name VARCHAR(16) --备份参数
DECLARE tmp_Cur CURSOR
FOR
SELECT NAME
FROM [sys].[databases]
WHERE NAME NOT IN ( 'master', 'model','msdb','tempdb' ) SET @path = N'D:\Backup\Autoback\';
SET @extension_name = N'bak'; --生成文件名
SET @filename = CONVERT(VARCHAR(1024), GETDATE(), 120)
SET @filename = REPLACE(@filename, ':', '')
SET @filename = REPLACE(@filename, '-', '')
SET @filename = REPLACE(@filename, ' ', '')
SET @filename = @filename + '_' + CONVERT (VARCHAR(3), DATEPART(ms, GETDATE()))
+ N'.' + @extension_name OPEN tmp_Cur;
FETCH NEXT FROM tmp_Cur INTO @dbname;
WHILE @@FETCH_STATUS = 0
BEGIN
-- 得到完整目标文件,数据库将备份到这个文件中
SET @backupfile = @path + @dbname + @filename
--SELECT @backupfile
SET @backdesc =@dbname + N'-完整 数据库 备份' -- 开始备份, COMPRESSION 参数表示压缩,可节省磁盘空间
BACKUP DATABASE @dbname TO DISK = @backupfile WITH NOFORMAT, NOINIT, NAME = @backdesc, SKIP, NOREWIND, NOUNLOAD, STATS = 10, COMPRESSION FETCH NEXT FROM tmp_Cur INTO @dbname
END
CLOSE tmp_Cur;
DEALLOCATE tmp_Cur; -- 删除3天前的备份文件
DECLARE @olddate DATETIME
SELECT @olddate = DATEADD(d, -3, GETDATE())
-- 执行删除 (SQL 2008 具备)
EXECUTE master.dbo.xp_delete_file 0, @path, @extension_name, @olddate, 1
--作业定时压缩脚本支持多库
DECLARE @DatabaseName NVARCHAR(50)
DECLARE @ExecuteSql NVARCHAR(MAX)
SET @ExecuteSql=''
DECLARE name_cursor CURSOR
FOR
SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb',
'northwind','pubs','AgentSys','ydttimedtask','YiDianTongV2' )
OPEN name_cursor;
FETCH NEXT FROM name_cursor INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ExecuteSql =''
SET @ExecuteSql +='
USE ['+@DatabaseName+'];
DECLARE @Error INT
SET @Error=(SELECT TOP 1 size/128.0 - CAST(FILEPROPERTY([NAME], ''SpaceUsed'') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files ORDER BY [NAME] DESC)
--PRINT @Error IF(@Error>1)
BEGIN
ALTER DATABASE ['+@DatabaseName+']  --数据库名字
SET RECOVERY SIMPLE;  --设置简单恢复模式
DBCC SHRINKFILE ([YiDianTongV2], 1);  --(M)不能小于1M,
DBCC SHRINKFILE ([YiDianTongV2_log], 1);  --(M)不能小于1M
ALTER DATABASE ['+@DatabaseName+']
SET RECOVERY FULL;  --恢复为原来完整模式
END
'
PRINT @ExecuteSql; --打印
EXEC(@ExecuteSql) --执行
FETCH NEXT FROM name_cursor INTO @DatabaseName;
END;
CLOSE name_cursor;
DEALLOCATE name_cursor;

SqlServer批量备份多个数据库且删除3天前的备份的更多相关文章

  1. Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器操作系统:CentOSIP:192.168.0.198端口:1521SID:orclOracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务 ...

  2. Linux下自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...

  3. Mongodb自动备份数据库并删除指定天数前的备份

    1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...

  4. sql server 批量备份数据库及删除N天前的备份数据

    很多时候,我们都需要将数据库进行备份,当服务器上数据库较多时,不可能一个数据库创建一个定时任务进行备份,这时,就需要进行批量的数据库备份操作,好了,废话不多说,具体实现语句如下: 1 2 3 4 5 ...

  5. MSSQL Server2012备份所有数据库到网络共享盘上面,并自动删除几天前的备份。。

    --要备份到哪一服务的IP网络位置,要提前打开文件夹共享.这里还要输入用户名和密码,下面这一行是建立共享 exec master..xp_cmdshell 'net use \\192.168.8.1 ...

  6. CentOS Linux自动备份MySQL数据库到远程FTP服务器并删除指定日期前的备份Shell脚本

    说明: 我这里要把MySQL数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2011_11_03.tar ...

  7. Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  8. Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

    说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...

  9. Linux实现定时备份MySQL数据库并删除30天前的备份文件

    1. MySQL5.6以上版本 2. 修改 /etc/my.cnf 文件 # vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password ...

随机推荐

  1. Python Keras module 'keras.backend' has no attribute 'image_data_format'

    问题: 当使用Keras运行示例程序mnist_cnn时,出现如下错误: 'keras.backend' has no attribute 'image_data_format' 程序路径https: ...

  2. C# IComparable 和 IComparer 区别

    理解很重要: 开始对这两个接口的区别一直是很模糊,看到很多书后,终于知道了区别,形成了个人的理解: 关于 IComparable 比喻一个类person实现了 IComparable,那么它就要重写C ...

  3. 在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max——猎八哥fly

    在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max. 思路:将a中的数组两两相加,组成一个新的数组.并将新的数组和a数组进行sort排序.然后将a数组从大到小与新数组比较,如 ...

  4. 团队作业7——Alpha冲刺之事后诸葛亮

    Deadline: 2017-5-15 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目内容为事后诸葛亮分析报告 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 ...

  5. 结对作业1----基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...

  6. Swing-BoxLayout用法-入门

    注:本文内容源于http://www.java3z.com/cwbwebhome/article/article20/200016.html?id=4797:细节内容根据笔者理解有修改. BoxLay ...

  7. 201521123038 《Java程序设计》 第六周学习总结

    201521123038 <Java程序设计> 第六周学习总结 1. 本周学习总结 2. 书面作业 1.clone方法 1.1 Object对象中的 clone 方法是被protected ...

  8. 201521123045 《Java程序设计》第5周学习总结

    第5周-继承.多态.抽象类与接口 1. 本周学习总结 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试 ...

  9. 201521123113 《Java程序设计》第1周学习总结

    1. 本章学习总结 1.java是一个面向对象的编程语言,相对于c++来说代码较简便又好用.第一次接触java时感觉每句代码比较难写,但学习了一些快捷方法后就很方便了. 2.java运行于JVM,因此 ...

  10. 201521123010 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...