远程备份

来源:互联网 发布:美工刀架图片 编辑:程序博客网 时间:2024/05/14 04:35

use master
go
ALTER proc bakup_DataBase
as
Declare @strPsw varchar(50)
Declare @strUsr varchar(50)
Declare @strCmdShell varchar(300)
Declare @strDataBaseName varchar(20)
Declare @FullFileName Varchar(200)
Declare @FileFlag varchar(50)
Declare @ToFileName varchar(200)
Declare @SQLStr varchar(500)
Declare @SQLStr2 varchar(500)
Declare @FlagDel varchar(20)
Set @FileFlag=replace(replace(convert(char(20),getdate(),20),':','-'),' ','-')     --备份的文件命名规则:日期-时间.bak
Set @strUsr='192.168.1.140/Administrator' --目标机器域名/目标机器windows用户名
Set @strPsw='admin'--目标机器Windows登陆密码
Set @strCmdShell= 'net use //192.168.1.140/ipc$ ' + @strPsw + ' /user:' +@strUsr --需填写IP(目标机器的IP地址,如:192.168.2.178)
Set @strDataBaseName='DBTest'--填写数据库名称(如:Soondy)
Set @FullFileName='E:/'+@FileFlag+'.BAK'--需填写本地备份临时文件的目录,因为需要先备份到本地再copy到目标机器(如:保存目录为E:/SoondyTest/)
Set @ToFileName='//192.168.1.140/db/' --需填写IP(目标机器的IP地址)以及保存的目录(如://192.168.1.140/db/)
Set @FlagDel='True'--填写True表示删除本地的备份临时文件,填写False或其他字符表示保留该文件
Set @SQLStr='copy '+@FullFileName+' '+@ToFileName
Set @SQLStr2='del ' +@FullFileName

BackUp DataBase @strDataBaseName To Disk= @FullFileName   with init

PRINT @strCmdShell
PRINT @SQLStr
exec master..xp_cmdshell @strCmdShell--尝试连接到目标机器
exec Master..xp_cmdshell @SQLStr --拷贝到目标机器上
if (@FlagDel ='True') exec master.. xp_cmdshell @SQLStr2--删除本地的备份临时文件
GO   

原创粉丝点击