2013-08-31 79 views
4

我有一个跨多个SQL Azure数据库分割的解决方案。这些数据库都具有完全相同的数据模式,并从其中一个数据库生成edmx。SQL服务器具有相同模式的多个数据库

如何在变更管理方面维护多个数据库的模式? 一个模式中的任何更改都必须自动应用于所有其他数据库。有什么我失踪?我查看了数据同步,但它似乎正在解决另一个问题。在我的情况下,模式是完全一样的,存储的数据是不同的。

+2

我还没有与Azure中使用它,但在以前的生活中,我喜欢红门多脚本,并取得了很大的使用工具SQLFarms将更改部署到共享通用模式的许多数据库。 –

+0

多脚本适用于Azure。 – user529265

+0

如果您想以编程方式执行此操作,除了使用Aaron建议的工具以外,您可以查看Django迁移for python - https://docs.djangoproject.com/en/dev/topics/migrations/ 或hibernate为Java http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/toolsetguide。html – chaos

回答

2

这可以使用SSDT(Addin for VS)和自动部署工具(我使用Final Builder)来实现。

我目前使用SSDT工具创​​建原始模式的数据库项目。 如果其中一个数据库有任何更改,我在SSDT中使用模式比较并更新数据库项目。 然后我按照以下步骤将更改发布到其他数据库。

第1步:更新数据库项目的模式更改。

步骤2:使用MSBuild并通过将其中一个数据库设置为目标来生成部署脚本。

第3步:使用任何自动部署工具在所有数据库中运行生成的脚本。

+0

也可以使用SqlPackage.exe命令行工具使用构建SSDT项目时生成的.dacpac文件将其部署到每个数据库。好处是它检查每个数据库的状态,因此如果它们中的任何一个与其他数据库不同步,它仍然会确保数据库最终处于正确的状态。这是使用MSBulid的不错选择。 –

1

如果您总是使用Entity Framework迁移对数据库结构进行更改,那么您可能可以在下面使用该方法。这取决于您的多个数据库如何与EF应用程序相关使用。

或者你可以使用EF迁移到generate a script,你可以在每个服务器上手动运行。

如果你有兴趣在自动化过程中它可能是值得考虑从红门看看Deployment Manager(全披露我的红门工作)。

这让你把一个数据库,并从Visual Studio或SSMS把它变成可以部署到多个服务器和环境的包装。最多5个项目和5台服务器的初始版本可以免费使用,并部署到Azure。它也可以部署.NET Web应用程序,但您可以将其用于数据库。

这对于确保相同的数据库架构是所有服务器上的环境中非常好,并通过测试/开发/生产符合任何应用程序更改传播数据库的变化。您也可以将它与源控制和CI系统相集成,数据库更改从开发到自动化生产

相关问题