2013-03-26 36 views
1

我们快速开发Web应用程序,我们正在寻找方法来分离我们的开发和生产数据库(目前我们直接开发生产...这是坏消息)。快速开发环境中的数据库部署ASP.NET Webforms/SQL服务器

我们使用ASP.NET Webforms与LINQ2SQL和CRUD的动态数据。我们如何在本地进行数据库开发,然后将更改部署到生产中?我已经看到了实体框架代码优先的迁移,但是我不知道LINQ2SQL的任何等价物。我们不想切换到EF,因为我们的CMS是围绕LINQ2SQL构建的。我们也需要生产数据在本地可用(不是最新的,但是最近已足够),所以如果出现问题,我们可以使用真实数据进行调试。

这是唯一的想法,我想出了这么远,但理想是远:

  1. 初始发展本地完成,然后部署到生产
  2. 随后的维护,然后在本地复制完成的生产数据库。然后我们使用某种'数据库差异'工具来确定所做的更改,并将这些更改迁移到生产中。

这是一种可以接受的做事方式吗?有没有更好的方法可以使用?

谢谢

回答

0

在SSDT数据库项目中开发您的数据模型和过程。这保证了数据库在任何时候都看起来相似的完美源代码副本。然后让工具为您生成发布脚本。

开发人员应该始终在自己的本地数据库副本上开发。他们可以从数据库项目中检出脚本并进行他们在本地发布的更改。他们可以获取检入项目的最新信息,合并他们的更改,再次在本地部署,测试出来,然后检入其更改。只有在所有内容都经过测试后,才会将更改发布到生产环境中。

您最终会像处理代码源文件一样处理数据库模式。

要将生产数据下载到您的开发服务器,我需要生产数据库的.bacpac或.dacpac文件,并将它们导入您的本地数据库。这很好,因为你需要模式定义以及数据,因为它很可能是一个比你在开发中拥有的版本更早的版本

+0

谢谢,这非常有帮助。 @ ryan1234建议(2)复制生产数据并在本地恢复。您建议的方法如何处理本地最新数据? – extremeandy 2013-03-26 21:59:32

+0

我认为最简单的方法是采用生产数据库的.bacpac或.dacpac文件,并将它们导入到本地数据库中。这很好,因为你也需要模式定义,因为prod很可能比你在开发中的版本要旧。 – DancesWithBamboo 2013-03-27 16:01:28

0

是的,我认为你基本上钉在头上。这些是我所做的两件事。

  1. 您可以在本地进行开发并检入SQL脚本以进行源代码管理。然后运行脚本进行部署。我所看到的工作很好,就是删除/重新创建所有存储过程(看起来很可怕,但如果您信任这些脚本,它会非常有用),然后在每次部署时为模式更改和数据迁移制作一次性脚本。

  2. 定期复制生产数据并在本地恢复。很明显,这种同步只能在部署后很容易发生,因为那时本地和生产将是相同的。在我目前的工作中,我们实际上是双工写入并将副本发送到较低的环境,所以我想这是一个选项。您可以从其他地方的生产中复制数据并解决此问题/编写一个工具将数据导入本地。

从我所看到的没有简单的答案。

+0

谢谢,好的食物! – extremeandy 2013-03-26 22:00:26