我们有18个数据库应具有相同的模式,但是不。在某些情况下,表中加入一,但不能休息。或者,某些存储程序需要在几个数据库,但是没有其他人。或者,我们DBA忘了运行一个脚本中添加意见所有的数据库。

什么是最好的方式保持数据库模式的同步?

有帮助吗?

解决方案

对于遗产的修复/清理,还有的工具,就像 SQLCompare,这可能产生的脚本到同步的数据库。

为。净的商店运行SQL服务器上,还有 Visual Studio数据库版, ,它可以创造更改脚本架构的变化,可以查到源控制和自动地使用你的CI/建立过程。

其他提示

SQL比较 通过红门是一个伟大的工具,这一点。

SQLCompare 是最好的工具,我用来寻找之间的差异的数据库,并让他们同步。

保持数据库的同步增长,需要有几件事情在地方:

1)你需要的政策,关于谁可以作出改变生产。一般来说,这应该只是DBA(DBA队对于较大组织)和1或2backaps.备份应该仅仅作出改变时DBA是出,或在紧急情况。备份不应当被部署在定期的基础上。设定数据库权利,根据这一政策。

2)一个进程和工具,管理部署的请求。理想的情况是你会有一个发展的环境,测试环境,以及生产环境。开发者应该做的初步发展,在开发人员环境,并有变化推测试和生产作适当的。你会需要某种方式让DBA知道什么时候推动的改变。我不会推荐一个过程,其中你发牢骚到下一个立方体。大型组织可能具有的更改控制委员会和变化仅得到了一个月一次。规模较小的公司可能只有开发人员的请求测试,并在测试过了请求部署到生产。一个较小的公司是我工作用的 问题跟踪器 对于这些请求。

使用任何工作在你的情况和预算,只是有过程的,有的工具,作为这一进程。

3)说,有时候对象只需要去一个少数的数据库。只有18个数据库,可能是一个服务器上,我建议使得各个数据库相匹配的对象。只有5个星展需要usp_DoSomething?所以什么?把它放在每一个数据库.这将更易于管理。我们做的这样在6个服务器系统大约有250至300DBs。也有例外,但他们被分组。数据库服务器C得到这种额外设置的对象。数据库服务器上我得到了这个其它组。

4)所述,有时DBA忘记部署更改脚本到所有DBs。这告诉我,s/他需要的工具,用于部署变化。S/他可能是把一个SQL脚本,打开它在查询分析或管理工作室(或什么使用),并手动将来的每个数据库和执行SQL。这不是一个很好的长期(或短期)的解决方案。 红门 (制造商SQLCompare段)有许多伟大的工具。 MultiScript 看起来像它可以作为部署的目的。我曾与一DBA写的是自己的工具,在SQL Server2000年使用O-SQl。这将需要一个SQL文件和执行它在上的每个数据库服务器。他不得不执行它的每个服务器上,但它打败上执行的每个数据库。我还帮助编写一个VB.net 工具,也会做同样的事情,除非它还将通过列表服务器,因此它只应执行一次。

5)源的控制。我当前的团队不使用源的控制,并且我没有足够的时间来告诉你如何许多的问题,这个的原因。如果你没有某种来源的控制系统,获得一个。

我还没有得到足够的信誉评论上述答复,但是专业的SQL版本比较具有编写脚本。鉴于你要复制东西所有的这些数据库可以使用这个做一个自动化的工作无论是产生变化或脚本来验证数据库都是同步的。它也不昂贵得多的标准版本。

除了使用数据库进行比较的工具,有18个数据库应该有一个数据库管理员,因此强制执行政策,只有DBA可以更改表中数据库级别通过限制来创建和修改,以DBA只。你的测试和现场数据库。开发数据库不应该有这个的,当然!使开发者已经创建或改变这些模式无可奈何地去通过的DBA。

创建一个单一来源控制的言/SQL脚本,用于每次发布和 用它来更新数据库。差异的工具可能是有用的,但主要用于检查,你有没有做了一个错误,并得到了麻烦的时候,该策略失败。结合言,SQL,并存储的过程脚本到一个脚本,因此,它是不容易的"忘记"运行的一个脚本。

我们有一个工具,称为数据库模式Difftective,可以比较和同步数据库的模式。与我们的其他工具、数据库MultiRun你可以很容易地部署而产生的(步)脚本到多个数据库服务器(项目的基础)。

我意识到这个职位是旧的,但交钥匙工程,是正确的。如果你是一个开发工作在团队环境下,最好的办法,以维持一个数据库架构的一个大型应用程序,更新主模式在什么都源的安全使用。只是写你自己的脚本类和数据库将是完美的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top