【问题标题】:Versioning options for shared database development (schema and data)共享数据库开发(模式和数据)的版本控制选项
【发布时间】:2018-03-21 05:41:07
【问题描述】:

我们有多个正在运行的应用程序实例(应用程序 + 数据库)(Dev、Test、Prod)。

我们目前的实施过程是这样的:

  • 多个数据库开发人员在同一个数据库上工作(应用程序由单独的团队开发)
  • 数据库开发过程包括添加/更改数据库对象和配置应用程序对象
  • 应用程序对象作为数据存储在数据库表(我们称之为内核表)中
  • 数据库已连接到应用程序实例,开发人员无法在本地计算机上运行自己的应用程序实例。 (我知道这不是最好的方法,但由于各种原因,目前我们无法采取不同的做法)

我们想找出一种方法和工具(最好是免费的,或者至少不是很贵) 要在功能级别上进行版本控制,通常,一名开发人员致力于一项功能。最后,特征通常是一些数据库对象(表、视图、存储过程)和插入到内核(应用程序)表中的数据。开发者不控制应用程序输入的数据。

内核表通常具有自动递增的主键,以及一些依赖项,例如其他内核表上的外键。

最终目标是建立持续集成流程。这意味着我们希望有一个自动化的过程来进行一些测试并将我们的功能填充到其他环境中。

我们同时使用 SQL Server 2014 和 Azure SQL 数据库。

你有什么经验/想法如何处理这种情况?

谢谢

【问题讨论】:

  • 我很想知道人们在 SQL Server 上使用什么。 Visual Studio 有一些内置工具,但我从来没有机会在 SQL Server 上试用它,而且它不适用于 Oracle。
  • 我不确定这是否会作为“推荐工具”类型的帖子关闭。

标签: sql sql-server versioning


【解决方案1】:

您可以将 Visual Studio Community https://www.visualstudio.com/vs/community/ 与 SSDT(SQL Server 开发人员工具)工具 https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt 一起使用

您现在可以创建一个 SQL 数据库项目,它可以处理您的所有数据库对象。此外,您可以使用 GIT 工具(github 或 vsts (https://www.visualstudio.com/) 存储和共享您的代码(私下)。

使用这些工具,您可以管理 Azure SQL 数据库和 SQL Server 数据库。

这里是这些工具的完整指南:https://msdn.microsoft.com/en-us/library/xee70aty.aspx

【讨论】:

  • 这是一篇介绍 SSDT CI 管道设置的 SQLServerCentral 文章。 sqlservercentral.com/articles/Continuous+Integration+(CI)/…
  • 嗨,我尝试同时使用 GitHub 和 Visual Studio,但问题是这两个工具都只在整个数据库级别进行版本控制。没有简单的方法只分支一些数据库对象并从中创建一个版本。我也尝试了其他一些工具,例如 RedGate 或 Apes,但它们的工作方式或多或少都相同。
  • 另一个故事是存储在我提到的表中的数据。我猜模式比较和集成可以以某种方式进行管理,但我真的不知道如何处理数据更改。在我们当前的设置中,通常当我尝试比较数据库数据时,通常行的 id 在环境之间不匹配,这显然是可以理解的,因为这些是完全独立的环境......
  • 我认为您需要创建分支来开发特定功能。完成后,合并分支。
  • 嗨,我尝试使用 git 和 TFVC 存储库进行分支。问题是我们只有一个数据库实例和多个开发人员的应用程序。一个潜在的解决方案可能只在数据库对象的某些子集上进行分支,但我无法实现这一点。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2014-01-25
  • 2020-04-03
  • 2011-06-26
  • 2018-02-02
  • 2011-09-25
相关资源
最近更新 更多