我目前正在使用Redgate SQL Comparison SDK并将其设置为很好的差异2数据库。
我现在想做的是能够使用目标数据库从源代码控制中区分出sqlproj。
我尝试使用tfs / vsts SDK来提取sql文件,但无济于事。
有没有办法将源代码控制中的sqlproj构建到dacpac然后将其作为源数据库拉入,或者直接将sqlproj作为源提取?
修改
我的最终目标是能够基本上将源代码管理中的数据库版本与运行在许多不同环境中的数据库进行比较,并为差异创建编写脚本。
我还有另外两个Redgate工具可以实现这一目标(SQL比较和SQL源码),但这些只能安装在1个(最多2个?)设备上,我遇到的困难是使用Amazon RDS(其中端点在VPC外部无法访问),我无法将这些工具的中央安装连接到我的所有环境,我无法为每个环境购买额外的许可证。所以我试图使用比较SDK试图“推动我自己的”中间地带。
非常感谢,
答案 0 :(得分:2)
我也在Redgate工作,请通过dlm@red-gate.com给我发电子邮件,如果你想详细了解你的具体问题,我会为我们打电话。
一般情况下,Redgate建议您执行以下操作的过程是保留您希望所有数据库在版本控制中具有的标准化架构。您可以通过每个开发人员使用SQL Source Control产品来获取该架构,以便在开发SSMS时从SSMS进行更改,或者使用SQL Compare产品将版本置于最后冲刺。
然后,您可以将我们的DLM Automation工具与CI服务器结合使用,为目标服务器自动创建差异报告和同步脚本。 DLM Automation是一组用于常见CI服务器的PowerShell命令行开关和插件,如TeamCity,Jenkins,VSTS,TFS等。您还可以使用SQL Compare Pro命令行。
如果您的整个团队都拥有我们的SQL Toolbelt产品,那么您就可以在构建/发布代理上多次安装DLM Automation工具,因此每个环境都不需要额外的许可证。
答案 1 :(得分:1)
您是否在自动化构建/ ci系统的环境中执行此操作?你提到VSTS,所以这通常的工作方式是,它已经从源代码控制中提取了文件。一旦文件在构建代理的工作文件夹中,您应该能够在此处指向SDK(或SQL Compare命令行)。请记住,sql proj不是Redgate工具的官方支持数据源,尽管它可以在很多情况下工作。
如果您可以编辑您的问题并提供一些您正在尝试解决的更高级别问题的背景,以防我们(我为Redgate工作)可以推荐更合适的工具或技术,那将是一件好事。