1.用sqlserver的维护计划 在这里我就不给截图演示了,这个比较简单,无非就是通过sqlserver自己的维护计划拖拽出2个一个‘备份数据库"任务和一个‘清除维护"任务。 需要注意的点: 1)有备份任务里边选择备份的库尽量选‘所有用户数据库"这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份。 2)选项验证备份集完整性和压缩备份尽量都选上。 3)备份的路径尽量别选磁盘根目录。 2.通过脚本+作业的方式备份数据库(非xp_cmdshell)。如果是多个库的话自己写个游标用动态sql的方式即可实现多库备份,我这里就提供个思路偷懒就不整理了。 复制代码 代码如下: DECLARE @filename VARCHAR(500) DECLARE @date DATETIME DECLARE @OLD_DATE DATETIME SET @date=GETDATE() SET @OLD_DATE=GETDATE()-5 --超过5天的备份即将被删除 SET @FILENAME = "E:存放位置数据库名称-"+CAST(DATEPART(YYYY,@DATE) AS VARCHAR(10))+"-"+CAST(DATEPART(MM,@DATE) AS VARCHAR(10))+"-"+CAST(DATEPART(DD,@DATE) AS VARCHAR(10))+".BAK" BACKUP DATABASE [数据库名称] TO DISK = @filename WITH COMPRESSION EXECUTE master.dbo.xp_delete_file 0,N"E:存放位置",N"bak",@OLD_DATE,1 GO
3.通过脚本+作业的方式备份数据库(用xp_cmdshell),如果你觉得你们服务器的网络、代码、以及防火墙足够安全可以开启xp_cmdshell的方式来备份。 如果数据库没开启xp_cmdshell的功能需要用以下脚本开通此功能,开通以后记得关闭sp_configure。 复制代码 代码如下: USE Master GO EXEC sp_configure "show advanced options", 1; GO RECONFIGURE WITH OVERRIDE; GO EXEC sp_configure "xp_cmdshell",1; GO RECONFIGURE WITH OVERRIDE; GO
下边是备份的脚本 复制代码 代码如下: DECLARE @DBNAME VARCHAR(128) DECLARE @PATH VARCHAR(50) DECLARE @SQL NVARCHAR(MAX) DECLARE @DDATE VARCHAR(8) SET @PATH = "E:BackUp" SET @DDATE = convert(char(8),getdate(),112) --删除超过1天的备份 SET @SQL ="xp_cmdshell "" forfiles /p ""+@path+"" /d -0 /m *.bak /c "cmd /c echo deleting @file.... && del /f @file"""" EXEC (@SQL) SET @SQL = "" SELECT @SQL = @SQL + " BACKUP DATABASE ["+NAME+"] TO DISK = """+@PATH+""+REPLACE(name,".","")+@DDATE+".bak """ FROM master..sysdatabases WHERE NAME NOT IN ("master","tempdb","model","msdb") EXEC (@SQL)