我已经为我的客户部署了大量软件。大多数是 Window Forms 应用程序。 这是我目前的做法。
- 在每台客户端电脑上手动安装 SQLExpress 和 SQL Management Studio。
- 然后使用 ClickOne 从服务器安装代码。
- 当代码发生变化时,我将使用 ClickOne 进行部署 -(此步骤没有问题)
- 但是当数据库列发生变化时,我该怎么办?
我什至尝试编写数据库更新脚本。每次程序启动时,它都会读取 .sql 更新文件并在数据库存在时运行它们。这解决了更新数据库列的问题,但是当我的客户提示数据错误时,它对我的调试工作没有帮助。到那时,我必须亲自去他们的网站看看。
我发现很难在客户端PC上安装数据库,因为它使我的调试工作非常困难。我正在考虑将我的客户端数据库移动到在线服务器上的主机上。但是随之而来的是这些限制:
- 如果互联网中断怎么办?
- 如果我的客户没有互联网怎么办?
你能帮我出出主意吗?这是开发人员面临的普遍问题吗?那里的常见做法是什么? 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/