Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何维护具有多个分支的SQLServerDB_Asp.net_Sql Server - Fatal编程技术网

Asp.net 如何维护具有多个分支的SQLServerDB

Asp.net 如何维护具有多个分支的SQLServerDB,asp.net,sql-server,Asp.net,Sql Server,我在git下有一个ASP.NET项目,我们遵循使用分支作为特性的惯例。我们刚刚开始使用SQLServer数据工具来管理模式更改(对它来说很新,所以我怀疑它可能有一些功能可以满足我的需要) 我正在寻找一些对其他团队有用的策略,这些团队管理具有不同DB模式的分支之间的切换,然后成功地将分支合并在一起。理想情况下,在合并所有功能之后,我会隐式地创建一个更改脚本,以部署到生产版本 注意:我使用的是SQL Server 2008 R2,此策略包含多个部分。一个方面是处理不同分支的存储,对于我的团队来说效果

我在git下有一个ASP.NET项目,我们遵循使用分支作为特性的惯例。我们刚刚开始使用SQLServer数据工具来管理模式更改(对它来说很新,所以我怀疑它可能有一些功能可以满足我的需要)

我正在寻找一些对其他团队有用的策略,这些团队管理具有不同DB模式的分支之间的切换,然后成功地将分支合并在一起。理想情况下,在合并所有功能之后,我会隐式地创建一个更改脚本,以部署到生产版本


注意:我使用的是SQL Server 2008 R2,此策略包含多个部分。一个方面是处理不同分支的存储,对于我的团队来说效果很好的是为每个分支使用不同的SQL Server实例(而不是使用分支特定的前缀或后缀命名单个数据库,例如MyDatabase_FeatureBranchX,这可能会失控)。这使每个分支中的相应数据库具有相同的名称(为了清楚起见),但也允许对给定分支的SQL资源(数据文件、访问权限等)进行物理和逻辑隔离

至于第二个更有趣的方面(我认为这是你的问题的主要意图),你可以考虑使用基于代码的“迁移”方法——例如,使用或类似的方法。如果您有一个标准的基线模式,每个分支最初都是从该模式创建的,那么您可以在代码中创建适当的迁移,作为每个分支中功能开发的一部分(并将它们应用于该分支的SQL实例)。当需要将分支合并到主干中时,您还需要进行合并,然后应用该分支的迁移

充其量,这意味着您可以在合并后对主干实例运行迁移工具,以便应用所有分支的迁移,因为这样的工具会自动跟踪应用了哪些迁移(通过自定义数据库表),而不会重新应用它们。如果您在整个功能分支的开发过程中定期将主干代码(包括其迁移)合并到功能分支中,并应用这些迁移,那么您还将确保功能分支的模式保持最新,从而将合并时的意外情况降至最低

当需要将主干部署到生产环境时,将再次应用这些迁移。FluentMigrator提供了多种功能:控制台应用程序、NAnt、MSBuild和Rake


我强烈建议使用基于时间戳的(例如201210241033)迁移ID策略,而不是简单的顺序整数(1,2,…),将冲突和更改超出预期顺序的可能性降至最低。

我以前使用过RedGate SQL Compare,当我有两个不同步模式时,它将分析数据库并将所需的修改脚本化到查询中,然后运行该查询“升级”所需的数据库。看看这里