Sql Server2005实现远程备份数据库(mysql如何定时备份)太疯狂了

随心笔谈2年前发布 admin
186 0 0

文章摘要

本文介绍了一种在SQL Server环境中使用第三方工具执行远程备份的方法,包括对数据库和IIS的远程备份。文章详细描述了如何配置备份脚本和定时任务,实现了对远程服务器的自动备份功能。主要内容包括: 1. **备份配置**: - 创建备份脚本,用于备份数据库和IIS。 - 指定备份文件路径、备份名称和版本号。 - 使用`osql`命令执行远程备份数据库,使用`iisback`命令备份IIS组件。 2. **定时任务配置**: - 使用存储过程`Creat_Job`创建一个定时任务,配置备份操作的时间和执行频率。 - 通过`msdb..sp_add_jobschedule`执行调度,设置备份任务每天执行。 3. **映射和权限**: - 使用`net use`命令创建映射,便于远程访问备份文件。 - 确保备份操作符合权限要求,避免冲突。 总结而言,文章通过代码示例展示了如何在SQL Server上实现远程备份功能,并通过定时任务实现自动备份,适用于需要定期数据保护和备份的企业环境。

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id=OBJECT_ID(N'[dbo].[BackSqlorFile]’) AND type in (N’P’, N’PC’))

 BEGIN

 EXEC dbo.sp_executesql @statement=N’

 CREATE proc [dbo].[BackSqlorFile]

 @ServerIp varchar(50),–数据库服务器IP

 @ServerName varchar(50),–数据库计算机用户

 @ServerPwd   varchar(50),–数据库计算机用户密码

@ServerIISIp varchar(50),–IIs服务器Ip

@ServerIIsName varchar(50),–IIs服务器名称

@ServerIIsPwd  varchar(50),–IIs服务器密码

@SqlShareFile    varchar(50),–远程sql共享文件

@IIsShareFile   varchar(50),–远程IIS共享文件

@MoveIIsPath   varchar(50),–d:/back

@MoveSqlPath   varchar(50),–d:/sql

@DataName      varchar(50),–数据库名称

@SqlloginName varchar(50),–远程数据库登陆名称

@SqlLoginPwd  varchar(50)–远程数据库登陆密码

as

begin

–Create data 2007-05-21

–Modify data 2007-05-21

–Autor:sp

–Method:数据库远程备份、虚拟主机远程备份、IIS远程备份

declare @iisname varchar(1000)–备份IIS的名称

declare @IISversion varchar(1000)–IIS版本号

declare @MovePath varchar(1000)–COPY文件的路劲

declare @IIsBack varchar(1000)–IIS备份命令

declare @IIsBackmd varchar(1000)–IIS备份为后缀的MD文件

declare @IIsBacksc varchar(1000)–IIS备份为后缀的SC文件

declare @SqlName varchar(1000)–备份数据库名称

declare @SqlPath varchar(1000)–备份数据库文件路金

declare @IISyshe varchar(1000)–IIS网罗映射

declare @Sqlyshe varchar(1000)–sql网络映射

declare @sqlback varchar(1000)—数据库备份命令

declare @url varchar(1000)– 数据库远程备份存放的路径

declare @osql varchar(1000)–数据库备份DOS操作命令

begin

  –命名规则’文件名+月+日+年‘

   set @SqlName=@DataName+replace(convert(varchar(50),getdate(),110),”-”,””)+”.bak”

   set @url=”E:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Backup/”+@SqlName

   set @sqlback=”backup database ”+@DataName +” to disk=”””+@url+””” with init”

   set @iisname=”IIs”+replace(convert(varchar(50),getdate(),110),”-”,””)

   set @osql=”osql -S”+@ServerIp+” -U”+@SqlloginName+”  -P”+@SqlLoginPwd+”  -dmaster -q””+@sqlback+”””

   set @IISversion=”123”–//replace(convert(varchar(50),getdate(),120),”:”,”-)

   set @IISBack=”iisback /Backup /s ”+@ServerIISIp+” /u ”+@ServerIIsName+” /p ”+@ServerIIsPwd+” /b ”+@iisname+” /v ”+@IISversion+””–远程备份IIS文件路劲

   –其中 /S 代表远程计算机名称或者IP /U 代表用户 /p 代表密码 /b 代表备份名称 /V 代表你所备份的版本号 /e 代表对备份文件进行加密

   set @IIsBackmd=”copy y:/”+@iisname+”.MD”+@IISversion+” ”+@MoveIIsPath+””

   set @IIsBacksc=”copy y:/”+@iisname+”.SC”+@IISversion+” ”+@MoveIIsPath+””

   set @Sqlpath=”copy q:/”+@SqlName+” ”+@MoveSqlPath+””

   set @IISyshe=”net use y: //”+@ServerIISIp+”/”+@IIsShareFile+” “”+@ServerIIsPwd+”” /user:”+@ServerIISIp+”/”+@ServerIIsName+””

   set @Sqlyshe=”net use q: //”+@ServerIp+”/”+@SqlShareFile+” “”+@ServerPwd+”” /user:”+@ServerIp+”/”+@ServerName+””

   exec master..xp_cmdshell @IISBack–远程备份

   exec master..xp_cmdshell @IISyshe –//建立网落映射IIS”

   exec master..xp_cmdshell @IIsBackmd

   exec master..xp_cmdshell @IIsBacksc

   exec master..xp_cmdshell ”net use y: /delete”–删除映射

   exec master..xp_cmdshell @osql–远程备份数据库

   exec master..xp_cmdshell @Sqlyshe–//建立网落映射数据库”

   exec master..xp_cmdshell @Sqlpath

   exec master..xp_cmdshell ”net use q: /delete”–删除映射  

END

end

END

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id=OBJECT_ID(N'[dbo].[Creat_Job]’) AND type in (N’P’, N’PC’))

BEGIN

EXEC dbo.sp_executesql @statement=N’

create proc [dbo].[Creat_Job]

@prorcname varchar(1000), –要调用定时调用的存储过程名,如果不在当前库中,则用:库名..所有者名..存储过程名

@job_date datetime –存储过程的执行时间(包括时间信息)

as

declare @dbname sysname,@jobname sysname,@date int,@time int

select @jobname=”作业_”+cast(newid() as varchar(36))

 ,@date=convert(varchar,@job_date,112)

 ,@time=replace(convert(varchar,@job_date,108),”:”,””)

if exists(select * from msdb..sysjobs where name=@jobname)

 exec msdb..sp_delete_job @job_name=@jobname

–创建作业

exec msdb..sp_add_job @job_name=@jobname,@delete_level=0

–创建作业步骤

declare @sql varchar(1000)

select @sql=”exec ”+@prorcname

 ,@dbname=db_name()

exec msdb..sp_add_jobstep @job_name=@jobname,

 @step_name=”执行步骤”,

 @subsystem=”TSQL”,

 @database_name=@dbname,

 @command=@sql,

 @retry_attempts=5,   –重试次数

 @retry_interval=5    –重试间隔

–创建调度

EXEC msdb..sp_add_jobschedule @job_name=@jobname,

@name=”时间安排”,

@enabled=1,

@freq_type=4, –代表每天都执行

@active_start_date=@date,

@active_start_time=@time,

@freq_interval=1–至少一次

— 添加目标服务器

EXEC msdb.dbo.sp_add_jobserver

@job_name=@jobname ,

@server_name=N”(local)”

END

© 版权声明

相关文章