如何在基于桌面的应用程序中部署SQL Server更改

时间:2018-07-13 09:07:47

标签: c# sql-server database winforms deployment

环境

  • SQL Server 2008 R2
  • 使用C#的Windows应用程序

场景

  • 我有使用SQL Server的桌面应用程序。应用程序部署构建由两个脚本#1 Create和#2 Update脚本组成,用于部署数据库更改。如果创建新数据库,它将使用#1脚本。如果更新现有数据库,它将使用#2脚本。永远都不需要运行两者。
  • #2脚本–与应用程序代码的版本绑定在一起。
  • 当单个用户使用本地SQL服务器时,这非常好。

问题

  • 我们有一个使用中央SQL Server的客户端,在该中央SQL Server中创建了数据库,并且各个用户通过桌面应用程序连接到该数据库。
  • 让我们说客户端正在运行应用程序版本02.12.15.140,并且预期的数据库版本号是1.2.45。本周,我们向他们发布了一个新的版本02.12.16.310,在此版本中,数据库版本号现在为1.2.51。如果用户安装了版本140,则将提示他们使用新的#2.sql脚本更新数据库,该脚本会将数据库版本号更改为1.2.51。如果另一个用户尝试运行内部版本140,则他们将无法连接到数据库,因为应用程序内部版本140期望数据库版本为1.2.45,但是由于中央服务器的缘故,该数据库将已更新至版本1.2.51。因此,所有用户都必须在同一客户端上才能使用该数据库。

我们的挑战是,有时要实现新功能或缺陷,我们需要更改数据库,无论是从表设计更改到存储过程更改。因此,新的客户端软件版本需要对数据库进行更新。我们希望确保客户端软件使用的是正确的数据库设计,因此我们已将客户端软件与数据库版本号绑定在一起。这使我们能够确保数据库设计符合我们的期望。但是,这也给强制数据库的所有用户同时更新客户端软件带来了不便。

在这样的环境中,是否有解决方案来部署数据库更改?

0 个答案:

没有答案