使用SQL 创建数据库备份作业
sql server2008R2 备份所有数据库
create PROCEDURE [dbo].[my_backup] @DISK VARCHAR(400) AS BEGIN /********************************************************* -- my_backup 'D:\DBBackup\' *********************************************************/ --SELECT [name],database_id INTO #tmp FROM sys.databases --WHERE [name] NOT IN ('master','tempdb','model','msdb') --DECLARE @DBName NVARCHAR(128) --DECLARE @SqlBackupDataBase as nvarchar(1000) --WHILE EXISTS(SELECT * FROM #tmp) --BEGIN -- SELECT TOP 1 @DBName=[name] FROM #tmp ORDER BY database_id -- set @SqlBackupDataBase=N'BACKUP DATABASE '+@DBName+' TO DISK = '''+@DISK+'\\'+@DBName+'-'+ -- CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak''' -- print @SqlBackupDataBase --打印出来(为了方便调试,可省略) -- exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL -- DELETE FROM #tmp WHERE [name]=@DBName --END SET NOCOUNT ON; IF @DISK = '' RETURN; DECLARE @sql NVARCHAR(MAX); 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 + 'BACKUP DATABASE [' + name + '] to DISK=''' + @DISK + name + '-'+@ts+'.bak'' ' + CHAR(10) FROM sys.databases WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb' ); --print @sql EXEC (@sql); END;
GarsonZhang www.yesdotnet.com
最新的命
CREATE PROCEDURE sys_backup AS BEGIN --EXEC sp_who @@SPID DECLARE @DBName NVARCHAR(128)=DB_NAME() -- 获得当前数据库名 DECLARE @SqlBackupDataBase as nvarchar(1000) set @SqlBackupDataBase=N'BACKUP DATABASE '+@DBName+' TO DISK = ''D:\DBBackup\'+@DBName+'-'+ CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak''' print @SqlBackupDataBase --打印出来(为了方便调试,可省略) exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL END
GarsonZhang www.yesdotnet.com
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
GarsonZhang www.yesdotnet.com
注:CONVERT()函数的第三个参数是时间样式ID;用REPLACE()函数替换掉了时间中的冒号(因为Windows中文件名不能包含该字符)
时间格式及ID对照表参考:W3school
(1.3)设置作业执行计划
在计划选项卡中,点击“新建”按钮新建计划:
设置完成后,点击”确定“按钮,另外三个属性“警报”、“通知”、“目标”如果需要可以自行设置,这里不再讲述。
完成计划设置后,点击上级的“确定”按钮,作业就创建完成了。
(2)手动验证作业执行的正确性
右键单击作业节点下刚建立的作业(图中的“BackupJobTest”),选择‘作业开始步骤(T)’
执行结果如下,表示成功:
点击“查看历史记录(V)”,可查看日志:
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post YES开发框架