2011-04-26 137 views
2

我想知道这是否可能,以及我需要达到什么程度的专业知识。我有3个数据库全部构建在SQL Server 2k8R2平台上。 2位于同一台服务器上,另外一台服务器位于同一个网络上。一个是发展(你知道那个可以打破,咬人,踢人时没人看的等等)。另一个是舞台,最后是制作。我想知道是否可以设置某种类型的镜像,这样可以让我在所有3个镜像中持续进行编程更改。例如,如果我要在我的开发数据库上开发一个新表和SPROC。测试并确保一切都很好并且工作,有没有办法当我提交我的更改时,将该表连同其键,索引,FK和创建的SPROC一起在其他2个数据库中自动生成,而无需我重新编写脚本并运行它们。原谅我的无知,我知道我可以编写脚本修改并加载每个脚本并运行脚本来生成所有我创建的内容,但我希望能够实时动态完成此操作。这是一个可以轻松完成的无痛过程吗?我不在乎复制表格中的数据只是编程的代码位。任何帮助是极大的赞赏。SQL Server 2008 R2镜像部署?

谢谢了, 约翰

回答

3

这是一个非常糟糕的主意,而不是你应该处理部署从开发到分期和到生产方式的改变。根据定义,您不想在开发环境和生产环境之间建立联系(理想情况下应该使用不同的安全凭证来防止意外更改)。

[还要注意:数据库镜像需要SQL Server 2008企业版]

相反,使用Visual Studio 2008 GDE数据库项目附加(或现在内置在VS 2010)。或者,使用Redgate's synchronisation tools。两者都可以并入您的自动构建过程。

Visual Studio 2010中:Working with Database Projects

一个数据库项目的很好的特性是,除了能够更新数据库就地,他们还可以生成脚本架构需要更改目标数据库而不实际应用它们。

更新:我目前使用Visual Studio 2010的数据库项目的工作流程类同如下:

  1. 获取最新的源代码
  2. 部署当前DB模式,以我的本地SQL Server实例(包括预填充静态参考的数据(和可以加载现实系统运行数据以及)
  3. 直接进行任何模式更改在本地数据库(和任何相关联的代码局部改变)。
  4. 构建和测试本地。
  5. 使用数据库项目模式比较工具将本地数据库与数据库项目中的模型进行比较,同步以生成未决的脚本模式更改。
  6. 检查一切。
  7. 一键部署到系统测试等。(我已经浏览了一些细节)
+0

我不关心生产数据库的说实话。我完全理解你在说什么。我更感兴趣的是保持舞台和制作同步。所以如果我在我的本地数据库上构建和测试某些东西,并且它可以工作,我希望能够自动将它放在舞台上播放。我认为舞台应该总是100%地模仿制作,这个想法是,如果它在舞台上运行,那么将变化转换为制作应该很简单。我是否完全错误地看待这个问题? – user724525 2011-04-26 00:24:11

+0

“我认为舞台应该总是100%模仿制作,并且这个想法是,如果它在舞台上移植变化,应该很简单” - 这是正确的。我使用VS2010数据库项目来做到这一点。 – 2011-04-26 00:27:06

+0

@ user724525,我强烈建议查看@Mitch Wheat有关使用Red Gate工具作为替代方法的建议。自2006年以来,一直在使用它们进行类似于上述+源代码管理的工作流程,但没有出现问题。他们将模式恢复为,如果您犯了错误并希望回滚,这很好。如果RedGate的价格过高,请查看[DevArt的](http://www.devart.com/dbforge/sql/schemacompare/)产品。与RedGate类似,但更便宜。考虑使RedGate的工具自动化,以使上述工作流程无人参与(=较少的人为错误)。 – dawebber 2011-04-26 02:15:13

0

您应该考虑更常规的开发,构建和部署工具,如Visual Studio数据库版,红门工具,DBGhost,团队城市等。这些是为工作而设计的工具。

由于诸多原因,镜像不太可能成为可行的选择。将舞台镜像到制作对我来说没有多大意义,因为这些环境的重点恰恰在于您可以独立部署它们并且彼此不依赖。你甚至没有提到一个测试环境(也许测试是你使用的舞台?)。在测试环境中,您通常还需要重新部署,回滚和修补更改和数据的功能。我怀疑镜像会阻碍而不是帮助测试。