ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL数据库自动备份+远程(备忘)

SQL数据库自动备份+远程(备忘)

原创 Linux操作系统 作者:iSQlServer 时间:2009-10-22 15:22:35 0 删除 编辑
具体步骤如下:
  一、开始菜单中打开SQL Server Management Studio,展开窗口左边的SQL服务器;
     二、SQL Server代理,右键选择"启动"(未启动的话); (图1)
         三、选择“作业->新建作业”; (图2)
       四、在"常规"中输入作业的名称; (图3)
       五、新建步骤,选择T-SQL,命令中输入下面语句(红色部分要根据自己的实际情况更改,D:"bak"改为自己的备份路径,databasename修改为想备份的数据库的名称) (图4)


DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'D:"bak"' + @strPath + '.bak'       
BACKUP DATABASE [databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT

如:DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'C:/bak/JJ_sp_' + @strPath + '.bak'
BACKUP DATABASE [JJ_sp] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT

        六、添加计划,设置频率,时间等;(图5)
确定,完成。
        七、注意在"服务"里面启用 SQL Server Agent 服务。(图6)

 

***************************************下面为远程自动备份***********************

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--打开xp_cmdshell
exec master..xp_cmdshell --使用xp_cmdshell
'net use h: \\23.170.201.68\data_back$ "" /user:192.168.10.29\administrator' --net连接 ,asd为共享的文件夹,必须可修改。“” 是密码,administrator用户名
declare @a char(80)
select @a ='z:\JJ_sp_' + replace(replace(convert(varchar(19),getDate(),120),' ','-'),':','-') + '.bak' --根据时间定义文件备份名称
backup database JJ_sp to disk= @a   --JJ_sp 为需要备份的数据库
exec master..xp_cmdshell 'net use z: /delete' --删除net连接
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;--关闭xp_cmdshell .只是将上面的后面的那个"1"改成"0"就可以了

 

将上段代码COPY到新建步骤的代码中。即可

******************以下为备份后压缩、删除原文件、定期删除15天前的备份、本地与远程都备份****************

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--打开xp_cmdshell
exec master..xp_cmdshell --使用xp_cmdshell
'net use h:
\\23.170.201.68\data_back$ "" /user:23.170.201.68\administrator' --net连接 ,data_back$为隐藏共享的文件夹,必须可修改。“” 是密码,administrator用户名


declare

@prefix nvarchar(100),

@datefile nvarchar(100),

@datefile1 nvarchar(100),

@bakfile nvarchar(100),

@rarfile nvarchar(100),

@rarfile1 nvarchar(100),

@rarfile2 nvarchar(100),

@delcmd nvarchar(100),

@delcmd1 nvarchar(100),

@delcmd2 nvarchar(100),

@copycmd nvarchar(100),

@rarcmd nvarchar(150)


set @prefix='S:\databack\JJ_sp\' --备份文件夹

set @datefile='JJ_sp_'+replace(replace(replace(convert(varchar(16),getdate(),120),'-',''),' ','-'),':','') --按时间取得文件名称用于备份

set @datefile1='JJ_sp_'+replace(replace(replace(convert(varchar(16),getdate()-7,120),'-',''),' ','-'),':','') --按时间取得文件名称用于删除

set @bakfile=@prefix+@datefile+'.bak'

set @rarfile='S:\databack\JJ_sp\'+@datefile+'.rar'

set @rarfile1='S:\databack\JJ_sp\'+@datefile1+'.rar' --删除7天前压缩路径 本地

set @rarfile2='H:\JJ_sp\'+@datefile1+'.rar' --删除7天前压缩路径 远程

BACKUP DataBASE JJ_sp TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'JJ_sp', NOSKIP , STATS = 10, NOFORMAT --备份数据库

set @rarcmd ='C:\Progra~1\WinRAR\WinRAR.exe a -o+ -m5 -ibck -ep '+@rarfile+' '+@bakfile --进行加密压缩

exec master..xp_cmdshell @rarcmd

set @delcmd = 'del '+@prefix+ '*.bak'   --删除原始文件

exec master..xp_cmdshell @delcmd


set @copycmd='copy '+@rarfile+' '+ 'h:\JJ_sp\' -- 设定备份路径

exec master..xp_cmdshell @copycmd       --copy压缩文件进行备份


set @delcmd1 = 'del '+@rarfile1+''   --删除7天前的备份文件 本地
exec master..xp_cmdshell @delcmd1

set @delcmd2 = 'del '+@rarfile2+''   --删除7天前的备份文件 远程
exec master..xp_cmdshell @delcmd2

exec master..xp_cmdshell 'net use h: /delete' --删除net连接
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;--关闭xp_cmdshell .只是将上面的后面的那个"1"改成"0"就可以了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-617166/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2074030