安装期间更新数据库

时间:2010-12-28 14:31:34

标签: c# .net sql-server installation

我有一个C#应用程序,它主要是管理物业租赁的数据库的前端。但是,数据库随软件一起发展,有时需要更新。

我希望能够从安装程序更新数据库,而不是部署一组sql文件和msi。我已经考虑将其写入程序的启动,但如果两个人同时启动程序,这可能会导致一些有趣的事情发生。该程序安装在一台服务器上,然后远程运行我的几个人,所以在安装程序中进行更新不会有这个人。

如何在安装程序期间更新数据库?

2 个答案:

答案 0 :(得分:0)

我记得我继承的应用程序面临类似的情况,编写应用程序的程序员键入了数据库中的两个字段,一个 - 运行它的任何安装程序之前的当前版本号将检查版本号,所以如果数据库有一个比安装程序尝试更高的版本,安装将中止,其次,在存储版本/构建的同一个表中,另一列存储数据库的状态,即进程中的操作/升级等,所以如果版本#是较旧,这是第二次检查,如果安装已在进行中,则第二次启动的安装程序将中止。即使在非常接近的同时发射的情况下,其中一个安装人员也会首先获得锁定。

编辑:通过中止等,我的意思是升级的数据库部分不会运行。

答案 1 :(得分:0)

正如您所发现的那样,使用最终用户安装更新生产数据库可能会有风险。以下是一些选项:

  1. 如果您无法参加安装,您可能需要指示您的客户与您联系以进行安装,以便您完成整个过程。

  2. 在将来的修订版中,在数据库中包含一个特殊的表。安装开始时,在该表中写入一条记录,指示正在进行升级。安装运行时不允许任何客户端连接。

  3. 不要覆盖现有的生产数据库。而是通过脚本将新数据库还原到服务器,然后使用SSIS进程将数据从先前版本数据库移动到新数据库。无论如何,这都是一个好主意,以防止可能损坏其生产数据库的安装失败。