将 sql 服务器数据库提交到源代码管理

Commit a sql server database to source control

我在两个不同的 sql 服务器实例上有两个名为 'xyz'(例如)的数据库。 sql 服务器实例上的两个 xyz 数据库都有一些共同的数据库对象,而其中一些在两个实例上不同。

我想将 xyz 数据库的单个副本存储在 azure devops git 存储库中。该副本应包括来自两个 sql 服务器实例的所有对象。

然后我想使用 AzDo Git 存储库使用 azure devops 管道实施 CI/CD 并仅部署特定于 sql 服务器实例的数据库对象——这意味着即使AzDo 存储库包含来自 2 个不同实例的 'xyz' 数据库的对象,每个 sql 服务器实例上的 xyz 数据库应在触发构建时保持其自定义版本。

我正在使用 SSDT 2017 中的 SQL 数据库项目编写数据库对象的脚本。

我尝试了以下方法来获得 2 个不同版本的数据库的单个副本。

1) 在ssdt 2017中创建一个解决方案并创建一个sql数据库项目。 2)右键单击解决方案并单击架构比较。选择第一个 sql 以 xyz 数据库作为源和空解决方案文件作为目标的服务器实例,然后单击比较。 比较表明 none 的结构存在于解决方案文件中。单击 'Update' 按钮更新解决方案文件。

3) 接下来,我比较了第二个 sql 服务器实例中的 xyz 数据库作为源,并将更新的解决方案文件作为目标。然后我将第二个 sql 服务器实例中的对象更新为解决方案文件。

现在 ssdt 中的 sql 数据库项目具有来自两个 sql 服务器实例的 xyz 数据库的对象。

现在,我在 AzDo Git 存储库中拥有单一的真实来源。但我不知道如何利用它来将各自的对象部署到各自的 sql 服务器实例。(P.s - 我不想在 [=40] 上同时拥有 xyz 数据库的所有对象=] 服务器实例。每个实例上的每个数据库都必须维护其自定义版本)

如果有任何不清楚的地方,请告诉我。感谢任何帮助。

使用通用代码创建一个项目,然后再创建两个项目并将自定义代码放入每个项目中。

从这两个项目创建一个对公共代码的“相同数据库”引用,并在部署时部署自定义代码项目,但指定包含复合项目的选项。