几周以来,我一直在尝试找到更详细的解释,并举例说明如何管理软件补丁上的数据库更改。

情况:

  • 我将 wpf 应用程序版本部署到 用户。应用程序使用 MSSQL 数据文件 存储应用的数据(使用客户端配置文件和 SqlServer Compact 3.5 先决条件进行部署)Storing app's data (Deploying with Client Profile and SqlServer Compact 3.5 prerequisites)
  • 在进一步的开发中,我添加了一些额外的数据库模式更改 数据也是
  • 我正在尝试运行一个 使用 Visual 进行补丁/次要/主要升级 Studio 2008 发布和 msi

我想更新用户应用程序和数据库文件,但不触摸存储在该数据库中的数据。看起来很简单,但我无法在网络上找到如何使用 Visual Studio 发布来完成此任务

到目前为止我收集到的有两个选择:

  • 为每个创建 sql 更新脚本 发布并尝试更新数据库 修补后的第一次程序启动。
  • 创建数据库安装项目并尝试 从那里编写脚本(不知道该怎么做)。

我很高兴听到你们中的一些人正在使用或将使用这种情况。一些示例链接/详细解释如何做会很棒。我不太擅长这个部署/数据库的东西......但是......:)

提前致谢。

有帮助吗?

解决方案

这篇文章关于“.Net 中的 Rails 风格数据库迁移“可能有用。自从 Rails 兴起以来,人们在数据库迁移的最佳实践方面做了很多工作,这些工作可以在其他语言和平台中利用。

其他提示

在我当前的项目中,我们使用一种称为持续数据库集成的技术。

我们将所有 sql 更改脚本(可以创建/更改表、存储过程,还可以迁移数据等)收集到一个 c# 项目中,并与软件的其余部分同时部署它们。

使用这种技术,我们可以确保所有开发人员数据库也是最新的,因为它集成在 Visual Studio 构建系统中。

我们运行此 MSBuild 脚本进行本地构建和部署。它检查数据库中的版本号,并运行具有更高版本号的任何脚本。

我不太喜欢 MSBuild,但它可以完成工作。

马丁·福勒有一篇文章关于 进化数据库设计 这有一些背景。

如果您使用 SQL Server Management Studio 进行更改,则可以使用“生成更改脚本”来让它为您编写更改脚本。

如果你将Installer类添加到你的DLL或EXE中,它的Install方法将在安装过程中被调用(详细信息请查看我们的MSDN,VS可以为你制作一个迷你安装项目,然后你只需复制骨架和属性即可)。然后,您可以针对 CE 运行 SQL 命令并备份现有的 CE 文件,甚至在出现问题时进行回滚(安装程序类具有在整个设置级别上遵循完整跨国步骤的方法 - 这是一件值得考虑的事情:-)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top