2010-11-03 51 views
1

我有一个客户谁有兴趣聘请我的公司做一个小的,自定义的,多用户联系数据库/ crm。他们不关心我使用的技术,只要产品托管在他们的组织内(不需要“云”托管)。现在的问题是他们的IT部门拒绝在他们的服务器上托管外部公司开发的任何应用程序,另外他们也不允许任何服务器不在他们的网络内部提供服务。在网络驱动器上共享sqlite数据库的任何实际经验?

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

我想这样做的应用程序,在Adobe AIR胖客户端,并让所有用户访问一个共享的SQLite数据库,但后来我读到了很多关于这种方法的消极方面。

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

你有什么经验?

+1

我感到遗憾的是,你必须处理这家公司。 – 2010-11-03 22:06:40

+0

@pst谢谢 - 我真的有一个糟糕的一天... – mme 2010-11-03 22:11:59

+0

从要求(以及微软Windows可能由外部公司开发的事实!),这听起来不像是一个技术问题。这听起来像是他们在对你放置要求,直到你放弃。 – Ken 2010-11-04 16:25:19

回答

4

你可以使用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

1

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

+0

并非如此。 int sqlite3_busy_timeout(sqlite3 *,int ms)允许您设置超时而不必开发任何东西。然而,这样做的网络驱动器应该是有问题的。 – ravenspoint 2010-11-04 16:21:18

+0

谢谢,这很好,我会记住这一点。预算不允许在C API级别开发,因此设置超时将不可用我猜(AIR,我认为没有此API调用)。 – mme 2010-11-04 22:15:00

相关问题