mssqlserver 复制拷贝附件sql脚本(三)之异地服务器导出
2015-02-05 17:33
387 查看
--开启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
相关文章推荐
- mssqlserver 复制拷贝附件sql脚本(二)之异地服务器导出
- mssqlserver 复制拷贝附件sql脚本(一)
- 跨服务器上复制文件,以及执行sql脚本
- SQL Server 开发之 复制表数据的SQL脚本生成器(带参数导出)
- 利用SHELL脚本实现将Oracle数据库的每日EXPDP导出文件复制到远程服务器
- [软件共享]将数据库中的数据导出为SQL脚本
- 将Oracle中的数据导出成SQL脚本的方法
- IBM DB2 Universal Database SQL 装入、导入和导出脚本的的生成
- SQL Server 开发之 复制表数据的SQL脚本生成器
- SQLServer 工具箱v1.3(SQL脚本排序,日志清除,数据导入导出)附完整源代码
- 用友ERP-NC精华实用SQL脚本之:快速复制公司的部门
- SQL Server里面如何导出包含数据的SQL脚本
- SQLServer 工具箱v1.2(SQL脚本排序,日志清除,数据导入导出)附源代码
- SQL复制中,订阅存在服务器上的过期时间设置
- MySQL导出和导入SQL脚本
- 用友ERP-NC精华实用SQL脚本之:快速复制操作员的权限
- 从Oracle数据库中导出SQL脚本
- 使用查询分析器调整SQL服务器脚本
- SQLServer 工具箱v1.2(SQL脚本排序,日志清除,数据导入导出)附源代码
- 跨不同服务器的sql脚本执行语言