我知道这是这些电路板上经常被问到的问题。通常问题是如何管理在数据库部署之前对数据库进行的更改。最后的答案是编写数据库脚本并将其保存在sourcecontrol下,然后将任何其他更新保存为脚本版本控制。(例如Tool to upgrade SQL Express database after deployment)
我的问题是什么时候最好在安装程序中应用数据库更新,或者新版本首次运行并连接到数据库?请注意,这是一个部署到客户的WinApp,每个客户都有自己的数据库。
答案 0 :(得分:1)
要添加到脚本中的一件事:在应用更改之前备份数据库(或至少是您正在更改的表!)。
答案 1 :(得分:0)
作为一个用户,我认为我更喜欢它在安装过程中发生,并且稍微进一步说安装程序可以在发生故障时自行回滚。我的想法是,如果我正在安装更新,我想知道更新何时完成,它实际上已经完成并且已经成功。我不想在下次运行时发出消息,通知我发生了故障,我可能丢失了所有数据。我认为系统管理员可能也会欣赏安装时间反馈(当然,如果您的网络应用程序不是将安装在网络上的话,这无关紧要)。此外,正如ראובן所说,备份数据库将是一个很好的方便。
答案 2 :(得分:0)
您对应用程序的体系结构没有多说,但由于涉及安装程序,我认为它是客户端/服务器应用程序。
如果您有服务器安装程序,那就是您要放置的位置,因为数据库结构只会更改一次。由于客户端安装程序需要知道更改,因此有一种方法可以检测数据库版本更改,并且旧客户端能够自动从服务器下载客户端更新并应用它。
如果您只有一个客户端安装程序,我仍然认为最好将它放在那里(可能是一个自定义操作,它会触发可执行文件来更新数据库)。但实际上并不重要,因为从概念上讲,新版本的一个安装程序或初次使用者无论如何都必须触发对数据库的更改。数据库更改将在数据库上放置结构锁,因此,实际上,每个人都必须在此时启动系统才能应用数据库更新。
当然,如果它不是客户端服务器,那么这就是所有BS。