当前位置: 首页 > 面试题库 >

SQL Server数据库更改工作流最佳实践

长孙承嗣
2023-03-14
问题内容

背景

我的小组有4个SQL Server数据库:

  • Production
  • UAT
  • Testing
  • Developer

我在开发环境中工作。当需要提升我一直在处理的对象(表,视图,函数,存储的过程)的时候,我向经理提出了要求,经理将其提升为Test。经过测试后,她向提升为UAT的管理员提交了请求。在成功进行用户测试之后,同一管理员将晋升为正式生产。

问题

出于某些原因,整个过程很尴尬。

  1. 每个人都必须手动跟踪他们的更改。如果我进行更新,添加,删除需要跟踪它们的所有对象,以便我的升级请求包含我已完成的所有工作。从理论上讲,如果我错过了某些测试或UAT应该抓住它,但这并不确定,并且无论如何都浪费了测试者的时间。
  2. 我所做的很多更改都是​​在GUI上迭代完成的,这意味着没有记录我所做的更改,只有最终结果(至少据我所知)。
  3. 我们正处于构建数据集市的初期阶段,因此所做的大部分更改(至少在数量方面)都是次要的事情:更改列的数据类型,在具体化表内容时更改表的名称它们将用于调整函数和存储的过程等。

问题

人们从事这种工作已有几十年了,所以我认为必须有一种更好的方法来管理该过程。我想要的是,如果我可以在两个数据库之间运行差异以查看结构差异,使用该差异生成更改脚本,然后将该更改脚本作为我的升级请求。这可能吗?如果没有,还有其他方法可以组织此过程吗?

作为记录,我们是一家100%的Microsoft商店,刚刚将所有内容更新到SQL Server 2008,因此该软件包中提供的任何工具都是公平的游戏。

我应该澄清一下,我不一定要寻找差异工具。如果这是同步我们的环境的最佳方法,那很好,但是如果有更好的方法,我正在寻找。

Ruby on
Rails中的移植是我真正想要做的一个很好的例子。语法简陋,自动记录了所有更改,默认情况下,确定要运行的迁移几乎是轻而易举的。我很想知道SQL
Server是否有与此类似的东西。

我理想的解决方案是1)简单,2)搞砸。Rails迁移都是两者;到目前为止,我在SQL Server上所做的一切都不是。


问题答案:

版本控制和您的数据库

万恶的根源在于在UI中进行更改。SSMS是一种DBA工具,而不是开发人员工具。开发人员必须使用 脚本
对数据库模型/架构进行各种更改。对元数据进行版本控制以及从每个版本N升级到版本N + 1的升级脚本是经证明可可靠运行的 唯一 方法。这是SQL
Server本身部署的解决方案,用于跟踪元数据更改(资源数据库更改)。

VS Database项目中的SQL Compare或vsdbcmd和.dbschema文件之类的比较工具只是无法采用正确版本控制方法的商店的最后手段。它们在简单的场景中工作,但我看到它们在严重的部署中都会严重失败。如果工具试图
复制 数据,则只是不信任该工具可对+ 5TB表进行更改…



 类似资料:
  • 我们有一个使用基于cron的调度的工作流程。我们需要支持一个用例来更改cron表达式。 这样做的最佳做法是什么?

  • 问题内容: 管理数据库更改的最佳方法是什么?无论数据库客户端的语言如何,我都需要一个解决方案。我还希望能够在那些更改中使用特定的数据库功能,例如存储过程,触发器等。 问题答案: 首先,请确保您已编写了完整的数据库构建脚本,以便可以根据需要重建数据库。 然后,应将每个更改写为更新脚本。这样,您可以针对数据库分别运行每个更改。 将更改提交到代码库后,将更改脚本与构建过程合并,使其自动发生…然后将更改脚

  • 我正在开发Spring Boot Rest应用程序。ORMHibernate。我在DB中有更新相关实体的endpoint,例如,我有表“form”和表“rows”,每一行都附加到表单,所以一个表单可以包含表“rows”中的多行,每一行都有指向“form”的链接。 用例:我们正在获取要保存的行列表 其中一些新so is不包含ID 最好的方法是手动处理所有这些情况吗?或者是否有任何ORM/Spring

  • 我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有

  • 我希望在我工作的公司里从SVN转到Git。我面临的问题是如何让我的头脑围绕一个体面的工作流程。 通常,对于处于启动后状态的PHP项目,客户端会为一些带有ID(smeg23452)的工作创建票证。在SVN中,我们通常会将票证ID放在开发分支的每次提交中,然后挑选这些更改并将它们放入主干。没关系,但是有时合并失败,或者开发人员未能将票证号与工作相对应。 在理想情况下,我希望能够在Git中为票证建立一个

  • 我是Cassandra的新手,正在寻找一个关于如何为具有以下一般结构的数据建模的最佳实践: 对于不同的用户,附加的数据字段不一定相同(字段的名称或这些字段的类型) 示例(csv格式:) 我考虑过的几个选择: null 每个User_id创建Keyspace 每个关键字空间创建表“data” 备注: null null 创建多个keyspaces(例如“x”个keyspaces),每个keyspac