(5.3.2)数据库迁移——SSIS包批量导出
SSIS连接出错

原因 :
SSIS包批量导出代码
use msdb
go IF OBJECT_ID('msdb.dbo.usp_ExportSSISPkgs') IS NOT NULL
DROP PROCEDURE dbo.usp_ExportSSISPkgs;
go CREATE PROCEDURE dbo.usp_ExportSSISPkgs
@exportPath NVARCHAR(2000)='D:\pag'
AS
BEGIN DECLARE @pkgData XML, @pkgName NVARCHAR(1000),@pkgFolder NVARCHAR(4000), @cmd NVARCHAR(MAX) ;
PRINT '--Info: Create temp tables.';
IF (OBJECT_ID('tempdb.dbo.tbl_SSISPkgXML') IS NOT NULL)
BEGIN
PRINT '--Info: Drop existing temp table tempdb.dbo.tbl_SSISPkgXML.';
DROP TABLE tempdb.dbo.tbl_SSISPkgXML;
END
CREATE TABLE tempdb.dbo.tbl_SSISPkgXML(ID INT IDENTITY(1,1), PkgName NVARCHAR(1000) NULL, PkgFolder NVARCHAR(MAX) NULL,
PkgID VARCHAR(40) NULL,PkgData XML NULL);
PRINT '--Info: Insert Package data into tempdb.dbo.tbl_SSISPkgXML.';
IF (SELECT CHARINDEX('SQL Server 2005', @@VERSION))>0
--2005 version
BEGIN
--Use recursive CTE to get FULL path for SSIS packages on msdb
SET @cmd='WITH tbl_ssispkgfolder (FullPath, folderid)
AS
(SELECT CONVERT(NVARCHAR(MAX),''\root''),folderid FROM msdb.dbo.sysdtspackagefolders90
WHERE parentfolderid IS NULL
UNION ALL
SELECT CONVERT(NVARCHAR(MAX),t.FullPath+''\''+s.foldername),s.folderid
FROM msdb.dbo.sysdtspackagefolders90 s
JOIN tbl_ssispkgfolder t ON s.parentfolderid=t.folderid)
INSERT INTO tempdb.dbo.tbl_SSISPkgXML (PkgName,PkgID,PkgFolder,PkgData)
SELECT p.name, p.id, f.FullPath, CAST(CAST(packagedata AS varbinary(MAX)) AS XML)
FROM msdb.dbo.sysdtspackages90 p JOIN tbl_ssispkgfolder f ON p.folderid=f.folderid;';
EXEC(@cmd);
END
ELSE
--2008 or later version
BEGIN
SET @cmd='WITH tbl_ssispkgfolder (FullPath, folderid)
AS
(SELECT CONVERT(NVARCHAR(MAX),''\root''),folderid FROM msdb.dbo.sysssispackagefolders
WHERE parentfolderid IS NULL
UNION ALL
SELECT CONVERT(NVARCHAR(MAX),t.FullPath+''\''+s.foldername),s.folderid
FROM msdb.dbo.sysssispackagefolders s
JOIN tbl_ssispkgfolder t ON s.parentfolderid=t.folderid)
INSERT INTO tempdb.dbo.tbl_SSISPkgXML (PkgName,PkgID,PkgFolder,PkgData)
SELECT p.name, p.id, f.FullPath, CAST(CAST(packagedata AS varbinary(MAX)) AS XML)
FROM msdb.dbo.sysssispackages p JOIN tbl_ssispkgfolder f ON p.folderid=f.folderid
WHERE ISNULL(p.description,'''''''') NOT LIKE ''System Data Collector Package''
;';
EXEC(@cmd);
END PRINT '--Info: Enable xp_cmdshell to allow access File System from SQL Engine';
EXEC sp_configure 'show advanced options',1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE WITH OVERRIDE; PRINT '--Info: Start exporting...'
DECLARE cur_DtsxFile CURSOR FOR SELECT PkgName,PkgData, PkgFolder FROM tempdb.dbo.tbl_SSISPkgXML;
OPEN cur_DtsxFile;
FETCH NEXT FROM cur_DtsxFile INTO @pkgName, @pkgData, @pkgFolder;
WHILE (@@FETCH_STATUS=0)
BEGIN
PRINT '--Info: Create Package folder under '+@exportPath+ '';
SET @cmd= N'EXEC xp_cmdshell N''mkdir "' + @exportPath +@pkgFolder+ '\"''';
EXEC(@cmd);
SET @cmd=N'bcp "SELECT PkgData FROM tempdb.dbo.tbl_SSISPkgXML '
+ 'WHERE PkgName= '''''+@pkgName+''''' AND PkgFolder= '''''+@pkgFolder+'''''" queryout "'
+ @exportPath+ @pkgFolder+ '\'+@pkgName+'.dtsx" -T -w -S"'+@@SERVERNAME+'"' ;
SET @cmd = N'EXEC xp_cmdshell N'''+@cmd +'''' ;
PRINT '--Info: Export package '+QUOTENAME(@pkgName)+' to ' + @exportPath +@pkgFolder+'';
EXEC(@cmd);
FETCH NEXT FROM cur_DtsxFile INTO @pkgName,@pkgData,@pkgFolder;
END
CLOSE cur_DtsxFile;
DEALLOCATE cur_DtsxFile; END
(5.3.2)数据库迁移——SSIS包批量导出的更多相关文章
- ArcGIS使用技巧(七)——批量导出
新手,若有错误还请指正! 在ArcGIS中如何将栅格数据批量导出?用到"复制栅格这个工具",这里我用的例子是:将ArcGIS默认输出的DEM文件夹批量导出为tif格式.(如果是文件 ...
- MySQL数据库迁移与MySQL数据库批量恢复
目录 一.MySQL数据库迁移或备份 1. 了解使用InnoDB引擎创建数据库所产生的文件 2. 迁移数据库步骤 1. 从A服务器迁移至B服务器 2. MySQL重装并导入之前数据库 二.MySQL数 ...
- 维护计划生成的SSIS包存储在哪
首先理解导入导出包的基本概念:http://technet.microsoft.com/zh-cn/library/ms141772(v=SQL.110).aspx包既可以保存在SQL Server ...
- 部署SSIS包完成远程数据更新
** 温馨提示:如需转载本文,请注明内容出处.** 本文连接:http://www.cnblogs.com/grom/p/9018978.html 笔者需要定期从服务器更新N家客户的远程服务器数据,上 ...
- SSIS 包配置
在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部 ...
- Sql Server 部署SSIS包完成远程数据传输
本篇介绍如何使用SSIS和作业完成自动更新目标数据任务. ** 温馨提示:如需转载本文,请注明内容出处.** 本文链接:https://www.cnblogs.com/grom/p/9018978.h ...
- EF Code First Migrations数据库迁移
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- 2.EF中 Code-First 方式的数据库迁移
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目 ...
- Code First开发系列之数据库迁移
返回<8天掌握EF的Code First开发>总目录 本篇目录 开启并运行迁移 使用迁移API 应用迁移 给已存在的数据库添加迁移 EF的其他功能 本章小结 自我测试 本系列的源码本人已托 ...
随机推荐
- luogu 2577 [ZJOI2005]午餐 贪心+dp
发现让 $b$ 更大的越靠前越优,然后依次决策将每个人分给哪个窗口. 令 $f[i][j]$ 表示考虑了前 $i$ 个人,且第一个窗口的总等待时间为 $j$ 的最小总时间. 然后转移一下就好了~ #i ...
- 并发编程入门(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题
请阅读上篇文章<并发编程实战: POSIX 使用互斥量和条件变量实现生产者/消费者问题>.当然不阅读亦不影响本篇文章的阅读. Boost的互斥量,条件变量做了很好的封装,因此比" ...
- 在一个非默认的位置包含头文件stdafx.h
如果stdafx.h和你当前的工程不在一个文件夹下,当你在代码中第一行写下#include "stdafx.h"时,VC编译器会根据编译规则(相关的规则请查看MSDN)来区别std ...
- free 内存检测
free打印出的内存信息主要分为两种,一种是安装的内存,一种是用磁盘虚拟的内存,就是这里的Swap,相信装过Linux系统的同学肯定不陌生交换分区,这里Swap大小就是我们分区的时候分配的大小. 下面 ...
- Spring Cloud Eureka(二):Eureka 注册中心体验
1.Eureka 简述 本文主要从应用角度体验一下注册中心的搭建和使用,后文会由浅入深学习Spring Cloud Eureka 的各种原理和机制. Spring Cloud Eureka 是 Spr ...
- Python list 遇到的问题
1.list“+” 运算 <list += > diff. <ndarray +=> list1 += list2是追加,而不是加法运算 list1 = [0,0,0] lis ...
- 微信小程序之状态管理A
其实这个标题 不是很对 主要是最近小程序项目中 有这么一个状态 所有商品都共用一个商品详情页面 大概就是这样子 为了公司 保险起见,一些展示的内容已经处理 但是无伤大雅 就是这么两个按钮 左侧粉色 ...
- matlab gui界面设计记录
我们要进行的程序是彩色图像处理试验示例,用这个程序来练习我们的gui前台设计. 程序功能介绍:具有彩色图像处理及保存和音乐播放功能效果如下图 2 在MATLAB的命令窗口中输入guide命令,打开gu ...
- C++ STL——模板
目录 一 函数模板的特性 二 模板的实现机制 三 类模板 四 类模板如何派生子类 五 普通类的.h和.cpp文件分离 六 类模板在类内类外的实现 七 模板的应用实例 注:原创不易,转载请务必注明原作者 ...
- DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法
故障现象描述: 执行 SQL 语句时,出现类似如下错误消息. 指令 SQL:insert into t_stat_file_temp SQLSTATE:57011,供应商错误代码:-964 DB2 S ...