SqlServer 远程备份
CREATE PROC bakup_Folder_Pro
-- 备份本地文件夹到远程计算机
-- 包括备份数据库
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 = \'DB_ESPC\'
SET @fileTitle = REPLACE(REPLACE(REPLACE(CONVERT(CHAR(20),GETDATE(),120),\':\',\'\'),\' \',\'\'),\'-\',\'\')
SET @folder = @fileTitle -- 文件夹自动生成
SET @fileName = @fileTitle + \'.bak\'
SET @localFolderPath = \'E:\YY_SQJZGL\'
SET @localBckPath = @localFolderPath+\'\bck\\'+@fileName
SET @netPath = \'\\172.19.169.136\sqjzxxglxt\'
SET @netFolderPath = @netPath +\'\\'+@fileTitle
SET @netUserName = \'172.19.169.136\yy\'
SET @netUserPwd = \'119041\'
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
GO
-- 备份本地文件夹到远程计算机
-- 包括备份数据库
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 = \'DB_ESPC\'
SET @fileTitle = REPLACE(REPLACE(REPLACE(CONVERT(CHAR(20),GETDATE(),120),\':\',\'\'),\' \',\'\'),\'-\',\'\')
SET @folder = @fileTitle -- 文件夹自动生成
SET @fileName = @fileTitle + \'.bak\'
SET @localFolderPath = \'E:\YY_SQJZGL\'
SET @localBckPath = @localFolderPath+\'\bck\\'+@fileName
SET @netPath = \'\\172.19.169.136\sqjzxxglxt\'
SET @netFolderPath = @netPath +\'\\'+@fileTitle
SET @netUserName = \'172.19.169.136\yy\'
SET @netUserPwd = \'119041\'
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
GO