首页 文章

安装期间更新数据库

提问于
浏览
2

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

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

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

2 回答

  • 0

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

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

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

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

  • 0

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

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

相关问题