簡體   English   中英

將部署在SQL Server上的SSIS包復制回Visual Studio 2008

[英]Copying SSIS packages deployed on SQL Server back to Visual Studio 2008

我的Visual Studio 2008安裝中的Development SSIS框不再起作用。 我試圖弄清楚如何獲取在生產SQL 2008 SP2服務器上運行的軟件包並將它們插入新服務器上的Visual Studio的新安裝中。

謝謝

包只是xml文件。 只需將文件復制到本地,創建一個新的空項目,然后使用“解決方案”資源管理器中的“添加現有”對話框選擇,將* .dtsx文件導入該項目。

我假設OP知道基本文件副本,但是我相信他們的問題是他們已將軟件包部署到MSDB中。

要從MSDB中提取程序包,必須首先確定它們在msdb中的位置。 為此,您可以查詢sysssispackagefolders和sysssispackages,也可以只使用我的查詢SSIS Package Query

有了該查詢,感興趣的列就是PackagePath列。 將其與dtutil結合使用 ,您將獲得Extract -o-matic來進行軟件包恢復。

從本地主機上的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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM