用于颠覆和/或 BitBucket 的 VS2017 SSIS 版本控制

Posted

技术标签:

【中文标题】用于颠覆和/或 BitBucket 的 VS2017 SSIS 版本控制【英文标题】:VS2017 SSIS Version Control for subversion and/or BitBucket 【发布时间】:2018-11-17 22:18:36 【问题描述】:

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

背景:我的雇主目前使用颠覆 (SVN),但正在转向 BitBucket。据我所知,SVN 不处理 SSIS 项目/包版本控制。现在,在 VS2017 的 SSIS 解决方案中,我可以修改项目版本并设置主要、次要和内部版本号(我已将其设置为 1.0.0)。但是,当我构建解决方案时,这些值会重置为 0(即 0.0.0)。此外,当我将项目部署到集成服务目录并查询表(请参阅下面的查询)时,Major、Minor 和 Build 设置为 1.0.125。我不明白为什么这个项目没有反映这些价值观。

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

SELECT *
FROM SSISDB.internal.packages

【问题讨论】:

您可以探索visual svn 工具。它与 tortoise svn 很好地集成或实际上任何颠覆。虽然我自己正在寻找类似于 Talend 管理存储库的方式 【参考方案1】:

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

我创建了一个包 Package2,并为 VersionComments、VersionMajor、VersionMinor 显式分配了值。 VersionBuild 是一个根据包保存次数自动递增的数字。

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

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

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

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

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

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

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

SSISDB UI 显示项目的“属性”菜单,指示名称、ID、描述、项目版本和部署日期。由于这很容易查看,我曾经将项目描述设置为$Revision 或类似的名称,这样我就可以一眼看出该项目是否符合我的预期。

这也可以通过查询基表来得出

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

【讨论】:

我明白了问题所在。我右键单击该项目并在那里设置版本信息。但是,您指的是实际的包裹。这让我明白了。谢谢。 我看到包出现在 SSISDB.catalog.packages(第二次查询)中,但它没有出现在 msdb.dbo.sysssispackages(第一次查询)中。任何想法为什么和这很重要?注意:我在 SQL 2014,VS 2017 上。该项目是从 VS2017 部署的(而不是 isdeploymentwizard.exe) 排除了为什么你会在一个地方或另一个地方找到包裹的答案@JWeezy 我明白了,您提供了我希望根据我使用的部署模型找到数据的表信息。是的,我知道部署模型之间的差异,但不知道它们在包部署方面存储在数据库中的什么位置。根据 Microsoft 的网站(请参阅下一条评论),他们从 2016 年开始“引入”包部署模型,以允许在项目部署模型中单独部署包。这非常令人困惑,尤其是当他们的网站明确声明包部署模型是 LEGACY 时。 docs.microsoft.com/en-us/sql/integration-services/packages/…@billinkc

以上是关于用于颠覆和/或 BitBucket 的 VS2017 SSIS 版本控制的主要内容,如果未能解决你的问题,请参考以下文章

颠覆和冲击:Service Mesh VS 网络防火墙中间件

颠覆HTTP协议,IPFS网络首次使用,极速看片!

将 GitHub for Windows 用于 Bitbucket 和 GitHub

TortoiseSVN vs Subversion

用于 VS 2010 的 LINQ to SQL 可视化工具?

将 Bitbucket 用于现有项目