用于颠覆的 VS2017 SSIS 版本控制 and/or BitBucket

VS2017 SSIS Version Control for subversion and/or BitBucket

问题:是否可以管理 SSIS project/package 的版本控制?如果是,哪个工具:SVN/BitBucket、VS2017 或 SQL 服务器?

上下文: 我的雇主目前使用 subversion (SVN),但正在迁移到 BitBucket。据我所知,SVN 不处理 SSIS project/package 版本控制。现在,在 VS2017 中的 SSIS 解决方案中,我可以修改项目版本并设置 Major、Minor 和 Build 编号(我已将其设置为 1.0.0)。但是,当我构建解决方案时,这些值被重置为 0(即 0.0.0)。此外,当我将项目部署到 Integration Services Catalog 并查询 table(请参阅下面的查询)时,Major、Minor 和 Build 都设置为 1.0.125。我不明白为什么项目没有体现这些价值观。

所以,除了部署之外,似乎不可能进行跟踪;获取版本信息;将其包含在 SVN 的签入注释中。没有?

SELECT *
FROM SSISDB.internal.packages

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

我创建了一个包 Package2,并明确地为 VersionComments、VersionMajor、VersionMinor 赋值。 VersionBuild 是一个根据包保存次数自动递增的数字。

我将该包部署到 SQL 服务器包存储 (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(和描述)都作为第一层元素公开。

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

评论表明一个包出现在一个地方,SSISDB 而不是 msdb。

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

包部署是 SQL Server 2012 之前的唯一选择。包部署 可以 转到 SQL 服务器,如果可以,它将是在 msdb 中的 table 中找到,名称以 syspackages 开头(实际名称在 2005、2008/r2 之间变化)。否则,它们将位于某个文件系统上。 Package Deployment 仍然是当前 2017 版本的一个选项。

项目部署是2012年新增的,成为默认选项。它解决了围绕包的许多管理问题。相反,项目被视为一个整体,不可分割的单元,而不是 N 个 SSIS 包。项目 "compiled" 到一个扩展名为 .ispac 的可部署单元(一个带有清单的 zip 文件)。然后将 .ispac 文件部署到 SSISDB,通常是通过 isdeploymentwizard.exe

Incremental Package Deployment 功能仍使用项目部署模型*,因此您的包将存储在 SSISDB 中。

SSISDB UI 为项目公开了一个属性菜单,指示名称、ID、描述、项目版本和部署日期。因为这很容易查看,我曾经将项目描述设置为 $Revision 或类似的东西,这样我一眼就能看出项目是否在我预期的位置。

这也可以通过查询像

这样的基数table推导出来
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 中时为您创建一个项目。因此,您可以在将项目留在包部署模型中的同时获得项目部署模型的管理细节。