mssqlserver 复制拷贝附件sql脚本(三)之异地服务器导出

--开启xp_cmdshell功能,否则无法使用xp_cmdshell
--EXEC sp_configure 'show advanced options', 1;
--RECONFIGURE;
--EXEC sp_configure 'xp_cmdshell', 1;
--RECONFIGURE;--

--数据库、原始附件存放位置、导出附件存放位置均不在同一台服务器。如数据库部署在服务器192.168.1.19,---原始附件存放位置:192.168.1.20(web文件和数据库分开部署),导出附件存放位置:192.168.1.85(防止影---响生产环境资源和占用生产环境空间)

declare @outputDir varchar(500)
declare @oriDir varchar(500)
declare @modeid int
declare @fileid int
declare @filename varchar(500)
declare @filePath varchar(500)
declare @cmd varchar(500)
declare @desDir varchar(500)

--导出附件存放的服务器信息
declare @serverUser varchar(500)
declare @serverName varchar(500)
declare @serverUrl varchar(500)
declare @serverPwd varchar(500)

--原始附件存放的服务器信息
declare @fileServerUser varchar(500)
declare @fileServerName varchar(500)
declare @fileServerUrl varchar(500)
declare @fileServerPwd varchar(500)


--原始附件存放服务器信息
set @oriDir='\\192.168.1.20\d$'
Set @fileserverUrl='\\192.168.1.20\d$'
Set @fileserverName='192.168.1.20\'
Set @fileserverUser='administrator'
Set @fileserverPwd='123456'

--要导出的目录(导出附件后存放的服务器信息)
Set @outputDir='\\192.168.1.85\e$\CopyFileSite\Test'
Set @serverUrl='\\192.168.1.85\e$'
Set @serverName='192.168.1.85\'
Set @serverUser='administrator'
Set @serverPwd='123456'


 
 declare @cmd1 varchar(1000),@cmd2 varchar(1000),@cmd3 varchar(1000),@cmd4 varchar(1000)
 --对原始附件服务器磁盘创建映射关系
 set @cmd2='net use ' + @fileserverUrl + ' "' + @fileserverPwd + '" /user:"' + @fileserverName + @fileserverUser + '"'
 EXEC master..xp_cmdshell @cmd2

 --对导出附件服务器磁盘创建映射关系
 set @cmd1='net use ' + @serverUrl + ' "' + @serverPwd + '" /user:"' + @serverName + @serverUser + '"'
 EXEC master..xp_cmdshell @cmd1

--获取附件信息
select modeid,fileid,fileName,FilePath into ##t from fileTable

declare cur cursor for
 select modeid,fileid,fileName,FilePath from ##t
open cur

fetch next from cur into @modeid,@fileid,@filename,@filepath
while @@fetch_status=0
Begin
 select @desDir=isnull(zihao,'')+' '+title from table1 where id=@modeid)
 if @desDir is null
  return
 --while ascii(right(@desDir,1))<32
 --begin
  set @desDir=replace(replace(@desDir ,char(10) , ''),char(13),'')
 --end
 set @cmd='md "'+@outputDir + '\' +@desDir+'"'
 EXEC master..xp_cmdshell  @cmd,no_output
 --print @cmd
 set @cmd= 'copy "' +@oriDir +replace(@filePath,'/','\')+'"' + ' "' +@outputDir +'\'+ @desDir+'\'+@filename+'"'
 EXEC master..xp_cmdshell   @cmd
 --print  @cmd

 set @cmd=''
fetch next from cur into @modeid,@fileid,@filename,@filepath
End
close cur
deallocate cur
drop table ##t



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值