【问题标题】:Copying SSIS packages deployed on SQL Server back to Visual Studio 2008将部署在 SQL Server 上的 SSIS 包复制回 Visual Studio 2008
【发布时间】:2011-11-19 03:01:48
【问题描述】:

装有 Visual Studio 2008 的开发 SSIS 框不再工作。我正在尝试弄清楚如何获取在生产 SQL 2008 SP2 服务器上运行的包并将它们插入到新服务器上新安装的 Visual Studio 中。

谢谢

【问题讨论】:

  • 您说软件包正在您的服务器上运行。但是它们是否也存储在服务器中,而不是磁盘中?
  • 同意威廉。 @jcustance 你只需要从本地驱动器复制你的 .dtsx 文件并导入到 VS 中的新项目中。

标签: sql-server visual-studio ssis bids


【解决方案1】:

包只是 xml 文件。只需将文件复制到本地,创建一个新的空项目,然后使用解决方案资源管理器中的“添加现有”对话框选项将 *.dtsx 文件导入项目。

【讨论】:

    【解决方案2】:

    我假设 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'
    

    【讨论】:

    • 当然,让这成为使用版本控制软件的一课。有很多免费和付费选项。
    • 感谢您的帮助。 vc 软件很棒,除非有人在同一台服务器上设置它,因为开发正在进行并且系统崩溃
    • 好收获billinkc!我读这篇文章只是不知道您可以简单地从文件系统部署中复制回 dtsx 文件。我错过了这些包存储在服务器存储中。 (就我而言,我的眼罩,因为我的最后两个工作场所都使用了文件系统部署)。我们倾向于将我们最常使用的东西视为每个人都在做的事情。希望我能比我更多地支持你,你应该得到我在这个问题上的投票。
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多