0

我目前正在使用 Redgate SQL 比较 SDK,并将其设置为可以很好地区分 2 个数据库。

我现在想做的是能够将 sqlproj 从源代码控制与目标数据库区分开来。

我曾尝试使用 tfs/vsts SDK 拉取 sql 文件,但无济于事。

有没有办法将 sqlproj 从源代码控制构建到 dacpac,然后将其作为源数据库拉入,或者直接将 sqlproj 作为源拉入?

编辑:

我的最终目标是能够基本上将源代码控制中的数据库版本与在许多不同环境中运行的数据库进行比较,并为差异创建 delpoyment 脚本。

我还有另外几个 Redgate 工具可以完成此操作(SQL 比较和 SQL 源),但这些只能安装在 1 个(最多 2 个?)设备上,我遇到的困难是使用 Amazon RDS(外部无法访问端点VPC),我无法将这些工具的集中安装连接到我的所有环境,也无法为每个环境购买额外的许可证。所以我试图使用比较 SDK 来尝试“滚动我自己的”中间立场。

非常感谢,

4

2 回答 2

2

我也在 Redgate 工作,如果您想详细了解您的具体问题,请通过 dlm@red-gate.com 给我发电子邮件,我会为我们打电话。

一般来说,Redgate 建议您在下面执行的操作是保留您希望所有数据库在版本控制中拥有的规范化模式。您可以通过每个开发人员使用SQL Source Control产品在他们开发时从 SSMS 中引入他们的更改,或者通过使用SQL Compare产品在 sprint 结束时放入一个版本来获取该模式。

然后,您可以将我们的DLM 自动化工具与 CI 服务器结合使用,为您的目标服务器自动创建差异报告和同步脚本。DLM 自动化是一组 PowerShell 命令行开关和插件,适用于 TeamCity、Jenkins、VSTS、TFS 等常见 CI 服务器。您还可以使用 SQL Compare Pro 命令行。

如果您的整个团队都拥有我们的 SQL Toolbelt 产品,那么您将获得在构建/发布代理上安装 DLM 自动化工具的许可,因此您无需为每个环境提供额外的许可。

于 2016-08-22T12:30:45.840 回答
1

您是在自动化构建/ci 系统的上下文中执行此操作吗?你提到了 VSTS,所以这通常的工作方式是它已经从源代码管理中提取了文件。一旦文件位于构建代理的工作文件夹中,您应该能够将 SDK(或 SQL 比较命令行)指向此。请记住,sql proj 不是 Redgate 工具官方支持的数据源,尽管它可以在许多情况下工作。

如果您可以编辑您的问题并提供一些有关您尝试解决的更高级别问题的背景信息,以防万一我们(我为 Redgate 工作)可以推荐一套更合适的工具或技术。

于 2016-08-19T16:03:00.827 回答