c# - 数据库部署实践

标签 c# sql deployment

我已经为我的客户部署了大量软件。大多数是 Window Forms 应用程序。 这是我目前的做法。

  1. 在每台客户端电脑上手动安装 SQLExpress 和 SQL Management Studio。
  2. 然后使用 ClickOne 从服务器安装代码。
  3. 当代码发生变化时,我将使用 ClickOne 进行部署 -(此步骤没有问题)
  4. 但是当数据库列发生变化时,我该怎么办?

我什至尝试编写数据库更新脚本。每次程序启动时,它都会读取 .sql 更新文件并在数据库存在时运行它们。这解决了更新数据库列的问题,但是当我的客户提示数据错误时,它对我的​​调试工作没有帮助。到那时,我必须亲自去他们的网站看看。

我发现很难在客户端PC上安装数据库,因为它使我的调试工作非常困难。我正在考虑将我的客户端数据库移动到在线服务器上的主机上。但是随之而来的是这些限制:

  1. 如果互联网中断怎么办?
  2. 如果我的客户没有互联网怎么办?

你能帮我出出主意吗?这是开发人员面临的普遍问题吗?那里的常见做法是什么? Window Azure 或 SQL CE 有帮助吗?

最佳答案

根据数据,我建议使用 SQL CE。 如果数据不是太多,速度不是主要目标(CE 比 Express 慢)并且您不需要 CE 不支持的 DB-Features(例如存储过程),恕我直言,这是更好的选择,因为:

  • 客户端不需要安装完整的SQL服务器(更容易安装/部署)
  • 多个 SQLExpress 实例没有问题
  • 即使有 SQL 实例,您的软件也无需担心
  • 客户端使用的资源较少

此外,客户可以将他们的 SQL CE DB 文件发送给您进行检查,您无需前往他们的网站。

使用 SQL CE 和 MS Sync FW 实现异地同步也相对容易。

关于c# - 数据库部署实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6267044/

相关文章:

php - Laravel 在两个表中搜索 'LIKE' 查询

asp.net-mvc - 如何使用 Octopus 更新 web.config 中的值?

c# - 在 C# 2.0 .net 中使用 Type.GetType(string) 但找不到类型或命名空间名称 't'

c# - 当我尝试将 Metadatatype 与 View 模型一起使用时,出现 InvalidOperationException

mysql - 我怎样才能优化他的sql查询

c# - 带参数的 SQLCommand 不再更新我的表

deployment - 如何从 psake 执行 .bat 文件?

c# - 升级现有应用程序以包含 ClickOnce

c# - 如何在 C# 中获取来电显示?

c# - 将 mysql 数据库中的字符串日期与 Entity Framework c# 进行比较