代码之家  ›  专栏  ›  技术社区  ›  J Weezy

用于Subversion和/或Bitbucket的VS2017 SSIS版本控制

  •  0
  • J Weezy  · 技术社区  · 7 年前

    问题: 是否可以管理SSIS项目/包的版本控制?如果是,哪个工具:SVN/BitBucket、VS2017或SQL Server?

    语境: 我的雇主目前使用Subversion(SVN),但正在转移到Bitbucket。据我所知,svn不处理ssis项目/包版本控制。现在,在VS2017中的SSIS解决方案中,我可以修改项目版本并设置主版本号、次版本号和内部版本号(我已将其设置为1.0.0)。但是,在构建解决方案时,这些值将重置为0(即0.0.0)。此外,当我将项目部署到integration services目录并查询表(请参见下面的查询)时,major、minor和build设置为1.0.125。我不明白为什么这个项目没有反映出这些价值观。

    因此,除了部署、获取版本信息、将其包含在svn的签入注释中之外,似乎无法跟踪。不?

    SELECT *
    FROM SSISDB.internal.packages
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   billinkc    7 年前

    我不知道你在说什么。版本控制是版本控制。有一些事情你可以用SVN做,你不能用其他的源代码管理系统做,比如使用…宏观扩张的东西 $author$ 或类似的东西,但它仍然版本的软件。

    我创建了一个包package2,并显式地将值赋给versioncomments、versionmajor和versionminor。versionbuild是一个基于包保存次数的自动递增数字。

    package properties

    我将该包部署到了SQL Server包存储(MSDB)中,然后将该项目部署到集成服务目录(SSISDB)中。然后我运行以下查询来检查数据。

    SELECT
        S.name
    ,   S.description
    ,   S.vermajor
    ,   S.verminor
    ,   S.verbuild
    ,   S.vercomments
    FROM
        msdb.dbo.sysssispackages AS S
    WHERE
        S.name = 'Package2';
    
    SELECT
        P.name
    ,   P.description
    ,   P.version_major
    ,   P.version_minor
    ,   P.version_build
    ,   P.version_comments
    FROM
        SSISDB.catalog.packages AS P
    WHERE
        P.name = 'Package2.dtsx';
    

    从结果中可以看到,versionbuild/versioncomments/versionmajor/versionminor(和说明)都作为第一层元素公开。

    enter image description here

    这些值与我的包记录的值相同。

    这些注释表明一个包出现在一个地方,ssisdb而不是msdb。

    这与包部署模型与项目部署模型的设计选择有关。

    包部署是SQL Server 2012之前的唯一选项。包部署 可以 转到SQL Server,如果找到,它将在msdb中的一个表中找到,该表的名称以 syspackages (实际名称在2005、2008/R2之间变化)。否则,它们将在某个文件系统上。包部署仍然是当前2017版本的一个选项。

    项目部署在2012年是新的,并成为默认选项。它解决了围绕包的许多管理问题。相反,项目被视为一个整体、不可插入的单元,而不是n个ssis包。项目被“编译”成扩展名为.ispac的可部署单元(带有清单的zip文件)。.ispac文件然后部署到ssisdb中,通常通过isdeploymentwizard.exe

    这个 Incremental Package Deployment 功能仍使用项目部署模型 * 所以您的包将存储在ssisdb中。

    ssisdb ui为项目显示一个属性菜单,指示名称、id、描述、项目版本和部署日期。因为这很容易查看,我曾经将项目描述设置为 $Revision 或者类似的东西,这样我一眼就能看出这个项目是否是我所期望的。

    enter image description here

    这也可以通过查询基表(如

    SELECT
        F.name AS FolderName
    ,   F.description AS FolderDescription
    ,   PR.name AS ProjectName
    ,   P.description AS ProjectDescription
    ,   PR.project_format_version
    ,   PR.deployed_by_name
    ,   PR.last_deployed_time
    ,   PR.created_time
    ,   PR.validation_status
    ,   PR.last_validation_time
    ,   P.name AS PackageName
    ,   P.description AS PackageDescription
    ,   P.version_major
    ,   P.version_minor
    ,   P.version_build
    ,   P.version_comments
    FROM
        catalog.projects AS PR
        INNER JOIN
            catalog.folders AS F
            ON F.folder_id = PR.folder_id
        INNER JOIN
            catalog.packages AS P
            ON P.project_id = PR.project_id;
    
    • 有趣的技巧是,增量包部署功能将在部署到ssisdb时为您创建一个项目。因此,您可以获得项目部署模型的管理细节,同时将项目留在包部署模型中。