SQL Server自动备份数据库

让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行。
具体来说,可以按以下步骤进行:

一、启动代理

打开SQL Server Management Studio,在对象资源管理器中,
确认SQL Server代理已启动,若没有,右击SQL Server代理节点,点击“启动”。

二、新建作业

展开SQL Server 代理节点,在其下的作业文件夹上右击,选择“新建作业”,在弹出的“新建作业”对话框中,在常规选卡上为该作业命名,如“备份TXDPCS”。

三、编写代码

选择“步骤”选项卡,点击“新建”按钮,在弹出的对话框中,为该步骤起一个名字,如“直接备份”,然后在命令栏中,输入如下命令:

DECLARE @fileName nvarchar(100) 
 SET @fileName='E:DB_Backup\' + REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(100), GETDATE(), 121), ' ', ''), ':', ''), '-', ''), '.', '') + '.bak' 
 PRINT 'Backup to ' + @fileName + '...' 
BACKUP DATABASE [数据库名称] TO DISK = @fileName WITH NOINIT , NOUNLOAD , NAME = N'数据库-备份', NOSKIP , STATS = 10, NOFORMAT

点击“确定”保存步骤。

四、设置定时任务。

选择“新建作业”的计划选项卡(这里就是定期执行的核心了!),点击“新建”按钮,为该计划命名,如“每周一、三、五、七执行”,然后进行其他设置,如每1周一、三、五、七执行,时间为00:00:00等。最后点击“确定”保存计划。

五、说明

//默认账户
osql -E -Q "BACKUP DATABASE db_test TO DISK = 'D:\DB_BAK\db_test%date:~0,4%%date:~5,2%%date:~8,2%'"

//指定账户
osql -S .\MSSQL2008R2 -U netuser -P netuser2008 -Q"BACKUP DATABASE db_test TO DISK = 'D:\DB_BAK\db_test%date:~0,4%%date:~5,2%%date:~8,2%'"

db_test:需要备份的数据库名称
D:\DB_BAK:数据库备份路径
%date:~0,4%%date:~5,2%%date:~8,2%:YYYYMMDD日期格式

六、手动备份也可以使用批处理

/************************************************************
 * 数据备份脚本:
 * 1.运行前,请根据实际配置修改相应账户信息;
 * 2.请将脚本执行结果另存为批处理文件,执行批处理文件即可;
 * 时间: 2015/3/10 14:21:15
 ************************************************************/
DECLARE @name        NVARCHAR(200)  
DECLARE @path        NVARCHAR(500)   
DECLARE @dbServer    NVARCHAR(500) 
DECLARE @dbUserName  NVARCHAR(500)   
DECLARE @dbUserPwd   NVARCHAR(500)   
--备份文件存放路径
SET @path = 'E:\05_DataBase_bakup\'   
--数据库服务器
SET @dbServer = '.'   
--数据库用户名       
SET @dbUserName = 'sa'  
--数据库用户密码        
SET @dbUserPwd = '123'        
DECLARE cursors CURSOR  
FOR
    --查询集合
    SELECT [name]
    FROM   [sysdatabases]
    WHERE  NAME NOT IN ('master', 'tempdb', 'model', 'msdb')
             
 OPEN cursors                       
 FETCH NEXT FROM cursors INTO @name  
WHILE @@fetch_status = 0
BEGIN
    --遍历集合
    PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd + 
    ' -Q "BACKUP DATABASE ['
    + @name + '] TO DISK = ''' + @path +
    '[%date:~0,4%%date:~5,2%%date:~8,2%]' + @name + '.bak''"' 
    FETCH NEXT FROM cursors INTO @name
END
 CLOSE cursors                
 DEALLOCATE cursors

猜你喜欢

转载自www.cnblogs.com/blogcore/p/12467007.html