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