我的Visual Studio 2008安装的我的开发SSIS框不再有效。我试图找出如何在生产的SQL 2008 SP2服务器上运行包并将它们插入到新服务器上的Visual Studio的新安装中。
感谢
答案 0 :(得分:4)
包只是xml文件。只需复制本地文件,创建一个新的空项目,然后使用Solution explorer中的Add Existing对话框选项将* .dtsx文件导入到项目中。
答案 1 :(得分:3)
我假设OP知道基本文件副本,但我相信他们的问题是他们将软件包部署到MSDB中。
要从MSDB中提取包,您必须首先在它们存在的msdb中标识 where 。为此,您可以查询sysssispackage文件夹和sysssispackages,或者只使用我的查询SSIS Package Query
使用该查询,感兴趣的列是PackagePath列。与dtutil结合使用,您可以使用提取物进行包装恢复。
从localhost上的MSDB到文件系统中当前文件夹的提取的基本形式如下所示。
dtutil /sourceserver localhost /SQL "Package" /copy file;.\Package.dtsx
在文本模式下运行此查询(ctr-T)此查询生成一系列dtutil调用,这些调用又从服务器中提取SSIS包。
;
WITH FOLDERS AS
(
-- Capture root node
SELECT
cast(PF.foldername AS varchar(max)) AS FolderPath
, PF.folderid
, PF.parentfolderid
, PF.foldername
FROM
msdb.dbo.sysssispackagefolders PF
WHERE
PF.parentfolderid IS NULL
-- build recursive hierarchy
UNION ALL
SELECT
cast(F.FolderPath + '\' + PF.foldername AS varchar(max)) AS FolderPath
, PF.folderid
, PF.parentfolderid
, PF.foldername
FROM
msdb.dbo.sysssispackagefolders PF
INNER JOIN
FOLDERS F
ON F.folderid = PF.parentfolderid
)
, PACKAGES AS
(
-- pull information about stored SSIS packages
SELECT
P.name AS PackageName
, P.id AS PackageId
, P.description as PackageDescription
, P.folderid
, P.packageFormat
, P.packageType
, P.vermajor
, P.verminor
, P.verbuild
, suser_sname(P.ownersid) AS ownername
FROM
msdb.dbo.sysssispackages P
)
SELECT
-- assumes default instance and localhost
-- use serverproperty('servername') and serverproperty('instancename')
-- if you need to really make this generic
'dtutil /sourceserver localhost /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /copy file;.\' + P.PackageName +'.dtsx'
FROM
FOLDERS F
INNER JOIN
PACKAGES P
ON P.folderid = F.folderid
-- uncomment this if you want to filter out the
-- native Data Collector packages
-- WHERE
-- F.FolderPath <> '\Data Collector'