--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\Weldon\DBBACK\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

/*******************差异备份作业*******************/
--截断日志
USE Master
GO
BACKUP LOG Demo  WITH NO_LOG
GO
--收缩日志文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO
--差异备份,每天一次
USE Master
GO
declare @str varchar(100)
set @str='D:\Weldon\DBBack\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差异备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

/******************日志备份作业*******************/
--日志备份,每小时一次
USE Demo
GO
declare @str varchar(100)
set @str='D:\Weldon\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日志备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

--删除过期的备份文件,每天两次
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\Weldon\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str

https://www.cnblogs.com/devloper110/articles/1298650.html

SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库。

(0)假设在创建作业之前你所要备份的数据库已经存在;其次,你已经会启动SQL Sever 代理(一般是关闭的)

(1)创建SQL Server代理作业

(1.1)新建作业,输出常规信息

如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己)

(1.2)设置作业执行步骤

点击左边“选择页”中的步骤属性选项卡,点击“新建”按钮

作业步骤属性窗口中,类型选择(T-SQL),选择要备份的数据库,并粘贴上调试好的SQL 备份脚本,由于我也是第一次写,贴一段示例在这里,读者可以自行参考修改:

--将SQL脚本赋值给变量
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE YourDataBaseName TO DISK = ''E:\DBBackup\YourDataBaseName-'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
--备份文件格式:YourDataBaseName-20140626233410.bak
print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL

注:CONVERT()函数的第三个参数是时间样式ID;用REPLACE()函数替换掉了时间中的冒号(因为Windows中文件名不能包含该字符)

时间格式及ID对照表参考:W3school

(1.3)设置作业执行计划

在计划选项卡中,点击“新建”按钮新建计划:

设置完成后,点击”确定“按钮,另外三个属性“警报”、“通知”、“目标”如果需要可以自行设置,这里不再讲述。

完成计划设置后,点击上级的“确定”按钮,作业就创建完成了。

(2)手动验证作业执行的正确性

右键单击作业节点下刚建立的作业(图中的“BackupJobTest”),选择‘作业开始步骤(T)’

执行结果如下,表示成功:

点击“查看历史记录(V)”,可查看日志:

通用备份作业:

ALTER PROCEDURE [dbo].[my_backup] @DISK VARCHAR(400)
AS
BEGIN/*********************************************************参数为空时,不执行备份,只打印出备份语句,可以直观得出需要备份的数据库列表my_backup ''my_backup 'D:\DBBackup\'*********************************************************/SET NOCOUNT ON;DECLARE @sql NVARCHAR(MAX);IF(LEN(@DISK)>1)IF(RIGHT(@DISK, 1) <> '\') SET @DISK=@DISK+'\'SET @sql = '';DECLARE @ts VARCHAR(50)=CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')SELECT @sql = @sql + 'IF EXISTS (SELECT * FROM ['+name+'].sys.extended_properties WHERE class_desc=''DATABASE'' AND name=''backup'' AND [value]=''Y'')'+CHAR(10)+'SET @SQL=@SQL+''BACKUP DATABASE [' + name + '] to DISK=''''' + @DISK + name + '-'+@ts+'.bak'''';''+CHAR(10) ' + CHAR(10)FROM sys.databasesWHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb','ReportServer','ReportServerTempDB' );--print @sql    --EXEC (@sql);DECLARE @S NVARCHAR(MAX)=''--     my_backup 'D:\DBBackup\'exec sp_executesql @sql,N'@SQL NVARCHAR(MAX) output',@S OUTPUTIF(ISNULL(@DISK,'')='')PRINT @SELSEEXEC (@S)
END;

  

将这个存储过程放到master中,创建作业定时执行这个存储过程,将需要备份的数据库添加一个扩展属性 backup值为Y即可

原文:http://www.cnblogs.com/January/p/3811524.html

转载于:https://www.cnblogs.com/GarsonZhang/p/6905607.html

使用SQL Server Management Studio 创建数据库备份作业相关推荐

  1. Microsoft SQL Server Management Studio ------- 附加数据库 对于 服务器“xxx失败(错误码5120)

    标题: Microsoft SQL Server Management Studio ------------------------------附加数据库 对于 服务器"xxx" ...

  2. Microsoft SQL Server Management Studio ------- 附加数据库 对于 服务器“xxxamp;amp;quot;失败(错误码5120)

    标题: Microsoft SQL Server Management Studio ------------------------------ 附加数据库 对于 服务器"DESKTOP- ...

  3. 无法打开数据库‘XXXX’。恢复操作已将该数据库标记为SUSPECT或者打开Microsoft SQL Server Management Studio发现数据库被标为可疑的解决办法

    无法打开数据库'XXXX'.恢复操作已将该数据库标记为SUSPECT 当你用navciat连接sql server 数据库的时候,发现某个库打不开的时候.爆出了这个'无法打开数据库'XXXX'.恢复操 ...

  4. Microsoft SQL Server Management Studio 附加数据库时出错。有关详细信息,请单击……

    在制作毕业设计的作业时,需要连接SQL数据库,在附加.mdf数据库文件时,出现了这个错误.于是上网查阅.我列出几个解决办法:基本上都是权限问题,或者认证方式以及版本问题. 1.找到.mdf文件,右击, ...

  5. 使用SQL Server Management Studio 创建作业备份数据库

    在项目中,经常需要备份数据库,如果能做到只需点个按钮("开始备份数据库"按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sq ...

  6. Microsoft SQL Server Management Studio ------- 附加数据库失败

    加数据库 对于 服务器"xxx"失败. (Microsoft.SqlServer.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?Pr ...

  7. SQL Server Management Studio管理数据库

    数据库管理 文件和文件组 (1)数据库文件(Database File) 数据库文件是存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据:当有多个数据 ...

  8. Microsoft SQL Server Management Studio附加数据库时出错。有关详细信息,请单击“消息”列中的超链接。

    附加数据库时出错.有关详细信息,请单击"消息"列中的超链接. 导入别人的项目时导入mdf和ldf数据库文件时,附加数据库出错 这是由于文件夹的权限问题,详细解决办法如下图所示: 我 ...

  9. .bak 服务器备份文件,如何从SQL Server Management Studio中的多个备份(bak)文件还原数据库...

    本文概述 在带有SSMS的SQL Server中, 还原数据库(至少对于小型数据库而言)非常容易.无论当前的原因是什么, 例如在生产环境中进行还原, 在本地环境中进行还原以检查数据库完整性等等, 你都 ...

最新文章

  1. 边缘计算技术发展与对策研究
  2. IOS开发基础知识--碎片45
  3. firefox显示nagios
  4. laravel 文件上传
  5. 新建idea加入的一句话,键值对
  6. 一线上nagios监控参数
  7. Google Guava多集
  8. javascript要点_JavaScript要点:为什么您应该知道引擎如何工作
  9. 微软阵营企稳的利好消息:.NET开源、Visual Studio免费
  10. 【华为云技术分享】解密如何使用昇腾AI计算解决方案构建业务引擎
  11. 华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力(2017年09月06日)
  12. 算法黑话大赏,我直呼好家伙!
  13. iMpACT中的Xilinx Prom烧录
  14. sshpass简介及安装
  15. [书籍推荐]为了自己的钱包,为了自己的时间——分享一下自己的淘书经验
  16. ELK详解(八)——Logstash收集系统日志实战
  17. 史上最全!数学参考书大评测及常见问题
  18. linux默认的分区是fat,linux下开机自动挂载FAT分区
  19. Android应用生命周期实现简单的秒表App
  20. DSP的时钟和系统控制

热门文章

  1. java dom获取命名空间属性_Java DOM XML解析::获取元素属性值
  2. 计算机网络—PPP协议和HDLC协议
  3. 操作系统—死锁的避免
  4. bzoj 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵
  5. 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)
  6. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛:I. 丢史蒂芬妮
  7. 利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数
  8. Java 绘制艺术图案
  9. python文件夹,文件监听工具(pyinotify,watchdog)
  10. 机器学习案例系列教程——距离度量方法总结