繁体   English   中英

在安装过程中更新数据库

[英]Updating Database during installation

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

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

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

我记得我继承的一个应用程序也遇到类似的情况,编写该应用程序的程序员在数据库中键入了两个字段,一个-在任何安装程序运行之前的当前版本号都会检查版本号,以便数据库是否具有更高的版本号。版本比安装程序尝试的版本高,安装将中止,其次,在存储版本/内部版本的同一表中,另一列存储数据库的状态,即正在运行/正在升级等,因此,如果版本号较旧,则说明是第二次检查,如果安装已经在进行中,则第二次启动的安装程序将中止。 即使在同时发射非常接近的情况下,安装者之一也会首先获得该锁。

编辑:中止等,我的意思是升级的数据库部分将无法运行。

如您所知,使用最终用户安装来更新生产数据库可能会有风险。 以下是一些选择:

  1. 如果您不可以进行安装,则可能需要指示客户与您联系进行安装,以便您逐步完成安装过程。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM