sqlserver数据库远程备份

Create PROC SP_bakup_DataBase
-- 备份本地文件夹到远程计算机
-- 包括备份数据库
AS
DECLARE @dbName VARCHAR(50) --需备份的数据名称
DECLARE @fileTitle VARCHAR(200) -- 文件标题
DECLARE @folder VARCHAR(200) -- 文件夹名称
DECLARE @fileName VARCHAR(200) -- 备份文件名
DECLARE @localFolderPath VARCHAR(200) -- 本地文件夹路径
DECLARE @localBckPath VARCHAR(200) -- 本地备份文件夹路径
DECLARE @netPath VARCHAR(200) -- 远程文件夹路径
DECLARE @netFolderPath VARCHAR(200) -- 新建的远程文件夹路径
DECLARE @netUserName VARCHAR(200) -- 远程计算机用户名
DECLARE @netUserPwd VARCHAR(200) -- 远程计算机密码
DECLARE @netSqlStr VARCHAR(500) -- 映射字符串
DECLARE @copySqlStr VARCHAR(500) -- copy到远程计算机字符串
DECLARE @delSqlStr VARCHAR(500) -- del本地备份文件字符串
DECLARE @flag VARCHAR(50) -- 标记,是否删除本机文件

SET @dbName = 'test'
SET @fileTitle = REPLACE(REPLACE(REPLACE(CONVERT(CHAR(20),GETDATE(),120),':',''),' ',''),'-','')
SET @folder = @fileTitle -- 文件夹自动生成
SET @fileName = @fileTitle + '.bak'
SET @localFolderPath = 'E:\beifen'
SET @localBckPath = @localFolderPath+'\'+@fileName
SET @netPath = '\\192.168.1.202\web'
SET @netFolderPath = @netPath +'\'+'beifen'
SET @netUserName = '192.168.1.202\administrator'
SET @netUserPwd = '1234'
SET @netSqlStr = 'net use ' + @netPath + ' "' + @netUserPwd + '" /user:' + @netUserName
SET @copySqlStr = 'XCOPY ' + @localFolderPath + ' /i/e ' + @netFolderPath
SET @delSqlStr = 'DEL ' + @localBckPath
SET @flag = 'True'

-- 将数据库备份到本机目录下,WITH INIT 表示覆盖相同文件
BACKUP DATABASE @dbName TO DISK=@localBckPath WITH INIT

-- 映射
EXEC master..xp_cmdshell @netSqlStr

-- 将本机文件夹copy到远程计算机
EXEC master..xp_cmdshell @copySqlStr

-- 删除映射
EXEC master..xp_cmdshell 'net use * /del /y'

-- 选择是否删除本机文件
IF(@flag = 'True')
EXEC master..xp_cmdshell @delSqlStr

declare @olddate datetime
select @olddate=getdate()-5--删除5天前的备份数据

execute master.dbo.xp_delete_file 0,N'E:beifen/',N'bak',@olddate,1
--xp_delete_file 只能删除本地的数据而删除不了远程的数据。哪位大侠知道怎么删除远程数据麻烦请留言

GO

 

posted @ 2011-12-28 15:40  放哨De老鼠  阅读(1641)  评论(0编辑  收藏  举报