1

I'm getting ready to develop a MVC 3 website with C#, Entity Framework and SQL Server.

This website is built for critical jobs and data lost is something absolutely not allowed ! In my knowledge I had no experience of evolving database, but I know this project should be able to evolve while using incremental development methodology. May I know is there any guideline to follow and how do I evolve it without any single error? In term of database initial design or anything. Just, 0 Data Lost is highest priority requirement.

I need answer for this 2 question and hope some experience could guide me in this issue

  1. How to update database include table, column without affect other data in the same table
  2. How to update remote database (for example C# window apps and database is not with me)

For the 1. question the database is located at my web server but question 2 the database is staying with user end.

4

1 回答 1

1

答案是:您有责任按照您的要求设计升级过程。没有自动魔术可以为您做到这一点。

该过程通常涉及创建升级 SQL 脚本,该脚本将修改数据库结构,如果需要,它还可以将数据移动到临时表,同时更改主表的结构,以免数据丢失。您还可以在一些特殊的表中维护数据库版本,并在运行更新之前对其进行检查,以确保更新脚本在预期的旧版本上运行。

有像 RedGate SQL Compare 和 Visual Studio Database 工具(仅限 Premium 和 Ultimate 版本)这样的工具,它们能够获取旧数据库、新数据库并为您创建差异脚本,以便可以将旧数据库架构升级到新的架构。这适用于大多数情况,但您必须始终在测试环境中非常仔细地测试结果。如果可能的话,最好对生产数据库的备份进行测试。

如果出现任何问题,如何避免数据丢失?只有一种非常简单的方法备份数据库,然后再进行任何更改并在出现任何问题时恢复旧数据库。备份甚至可以使用 SQL 编写脚本。如果没有成功的备份,永远不要接触您的生产数据库。

如何升级客户端数据库?您将使用相同的过程,但您会将其全部包装在一些安装包 (.msi) 中,例如使用 WiX 创建的。

于 2011-07-07T08:30:25.747 回答