SqlServer批量备份多个数据库且删除3天前的备份

 更新时间:2017年09月20日 15:33:53   作者:smartsmile2012  
这篇文章主要介绍了SqlServer批量备份多个数据库且删除3天前的备份,需要的朋友可以参考下

废话不多说了,直接给大家贴代码了,具体代码如下所示:

/******************************************* 
 * 批量备份数据库且删除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 
[sql] view plain copy print?
--作业定时压缩脚本支持多库 
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天前的备份,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍

    SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍

    这篇文章主要介绍了SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN) ,需要的朋友可以参考下
    2014-07-07
  • ASP.NET下向SQLServer2008导入文件实例操作方法

    ASP.NET下向SQLServer2008导入文件实例操作方法

    在Microsoft SQL Server2008以后的版本中,将删除image数据类型。在新的开发工作中将不适用此数据类型,并打算修改当前使用此数据类型的应用程序,改用varbinary(max)数据类型。
    2010-09-09
  • SQL Server 2016 CTP2.2安装配置方法图文教程

    SQL Server 2016 CTP2.2安装配置方法图文教程

    这篇文章主要为大家详细介绍了SQL Server 2016 CTP2.2安装配置方法图文教程 ,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • SQL数据库日志已满解决方法

    SQL数据库日志已满解决方法

    把硬盘上的其他文件删除,以空出硬盘空间,将数据库的日志文件大小改成无限制,然后分离数据库,要确保分离成功等等需要了解的朋友可以参考下
    2012-12-12
  • 详解SQL创建表的几种方法

    详解SQL创建表的几种方法

    本文主要介绍了 详解SQL创建表的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • SQLServer数据库密码短时间强制过期的解决

    SQLServer数据库密码短时间强制过期的解决

    本文主要介绍了SQLServer数据库密码短时间强制过期的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • SQLAlchemy案例详解

    SQLAlchemy案例详解

    SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供SQL的全部功能和灵活性,这篇文章主要介绍了SQLAlchemy详解,需要的朋友可以参考下
    2024-04-04
  • idea连接SQL Server数据库的详细图文教程

    idea连接SQL Server数据库的详细图文教程

    Idea的还有个强大之处就是连接数据库,就可以少开一个数据库工具了,下面这篇文章主要给大家介绍了关于idea连接SQL Server数据库的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • sql中varchar和nvarchar的区别与使用方法

    sql中varchar和nvarchar的区别与使用方法

    经常用varchar总发现从access数据库直接转到mssql数据库默认的都是nvarchar和ntext所以,找了一下,原来有这个说法。
    2008-01-01
  • SQL Server附加数据库及出现5123错误的解决办法

    SQL Server附加数据库及出现5123错误的解决办法

    在SQL中,可以通过附加数据库的方式将一个已经存在的数据库添加到服务器上,本文主要介绍了SQL Server附加数据库及出现错误的解决办法,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04

最新评论