【问题标题】:Any real experiences of sharing a sqlite db on a network drive?在网络驱动器上共享 sqlite db 的任何真实经验?
【发布时间】:2012-12-04 14:25:43
【问题描述】:

我有一个客户有兴趣聘请我的公司来做一个小型的、定制的、多用户联系人数据库/crm。他们不关心我使用的技术,只要产品托管在他们的组织内部(没有“云”托管)。现在的问题是,他们的 IT 部门拒绝在他们的服务器上托管任何由外部公司开发的应用程序,此外他们也不允许在他们的网络中使用任何不由他们提供服务的服务器。

IT 允许共享数据的唯一方法是 Windows 网络共享...

我想在 Adob​​e Air 中将应用程序作为胖客户端,并让所有用户访问共享的 sqlite 数据库,但后来我读到了很多关于这种方法的负面信息。

所以我问你 - 有没有人真正尝试过这个?

你有什么经验?

【问题讨论】:

  • 从需求来看(以及 Microsoft Windows 可能是由外部公司开发的事实!),这听起来不像是一个技术问题。听起来他们对你的要求越来越高,直到你放弃。

标签: sqlite network-drive


【解决方案1】:

您可以使用 MS-Access 2007+ (accdb) 文件。 当然,有许多数据库引擎具有更多功能和更好的 SQL 语法,但是如果您正在寻找一个可以由共享 Windows 驱动器上的多个进程同时访问的基于文件的数据库系统,那么 accdb 文件同样好我想你会得到的。 另请注意,另一个流行的嵌入式数据库 SQL Server Compact Edition 不能在共享驱动器上使用(至少不能由来自不同机器的多个进程使用)。

参考资料: 在网络驱动器上共享访问数据库: http://office.microsoft.com/en-us/access-help/ways-to-share-an-access-database-HA010279159.aspx#BM3

SQL Server CE 不能在共享驱动器上使用: SQLCE 4 - EF4.1 Internal error: Cannot open the shared memory region

【讨论】:

    【解决方案2】:

    sqlite 锁定数据库的方式意味着您必须小心,如果您有可能有多个来源尝试访问数据库。你要么必须开发一个等待方法,要么超时,或者什么

    【讨论】:

    • 不是这样。 int sqlite3_busy_timeout(sqlite3*, int ms) 让您无需开发任何东西即可设置超时。但是,为网络驱动器这样做应该是有问题的。
    • 谢谢,很高兴知道这一点,我会记住这一点。预算不允许在 C API 级别上开发,所以我猜设置超时将不可用(AIR,我认为没有这个 API 调用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2011-10-31
    • 2013-01-23
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2019-12-26
    相关资源
    最近更新 更多