http://blog.51cto.com/ultrasql/1924464

use msdb
go IF OBJECT_ID('msdb.dbo.usp_ExportSSISPkgs') IS NOT NULL
DROP PROCEDURE dbo.usp_ExportSSISPkgs;
go EXEC dbo.usp_ExportSSISPkgs 'E:\temp\' CREATE PROCEDURE dbo.usp_ExportSSISPkgs
@exportPath NVARCHAR()='D:\temp\'
AS
BEGIN DECLARE @pkgData XML, @pkgName NVARCHAR(),@pkgFolder NVARCHAR(), @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(,), PkgName NVARCHAR() NULL, PkgFolder NVARCHAR(MAX) NULL,
PkgID VARCHAR() NULL,PkgData XML NULL); PRINT '--Info: Insert Package data into tempdb.dbo.tbl_SSISPkgXML.';
IF (SELECT CHARINDEX('SQL Server 2005', @@VERSION))>
-- 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
-- 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',;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'xp_cmdshell',;
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=)
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

最新文章

  1. MSSQL练习题
  2. UVA 10090 Marbles 扩展欧几里得
  3. MyEclipse中SVN的常见的使用方法
  4. c++必读
  5. MVC 区分是哪按键提交FORM
  6. 身处IT的你对身边人都有哪些影响
  7. 【思路、优化】UVa 11491 - Erasing and Winning
  8. HDU2088JAVA2
  9. JAVA Stack栈和Heap堆的区别(转)
  10. C++ 标准模板库(STL)
  11. struts1吊牌<logic:iterate>
  12. SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)
  13. expdp/impdp使用
  14. Python爬虫——Request模块
  15. List Leave
  16. 【POJ1037】A decorative fence(DP)
  17. WPF简单数据绑定
  18. effective c++ 笔记 (45-48)
  19. 菜鸟凉经(华为、firehome、大华)
  20. Android Path Time ScrollBar(Path 时间轴)

热门文章

  1. codeforces 1282 E. The Cake Is a Lie (dfs+构造)
  2. 怎么把VS里的scanf_s换成scanf
  3. 调用 url_launcher 模块打开外部浏 览器 打开外部应用 拨打电话 发送短信
  4. AC3 Rematrix
  5. DOM的方法和属性
  6. Hibernate知识点整理
  7. ubuuntu截图
  8. Common Subsequence Gym - 102307C 公共序列
  9. mybatis--Spring整合mybatis
  10. C语言 多文件编程