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

随心笔谈12个月前发布 admin
94 0

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

© 版权声明

相关文章