【发布时间】:2010-03-01 16:48:39
【问题描述】:
目前的应用程序是一种基于 MS Access 构建的 CRM 应用程序。该应用程序供内部使用。我的工作是将它迁移到基于 ASP.NET Web 的应用程序。现在老板要求保留Access作为数据库并针对它开发ASP.NET代码。
我的问题是,在 ASP.NET 应用程序中使用 Access 作为数据库有什么缺点吗? (例如乐观并发问题?)我应该说服老板将Access升级到MS-SQL吗?
非常感谢!
【问题讨论】:
目前的应用程序是一种基于 MS Access 构建的 CRM 应用程序。该应用程序供内部使用。我的工作是将它迁移到基于 ASP.NET Web 的应用程序。现在老板要求保留Access作为数据库并针对它开发ASP.NET代码。
我的问题是,在 ASP.NET 应用程序中使用 Access 作为数据库有什么缺点吗? (例如乐观并发问题?)我应该说服老板将Access升级到MS-SQL吗?
非常感谢!
【问题讨论】:
我们已成功使用 Access 作为网站的后端。它很便宜,可以被熟练的程序员有效地使用,并且您可以将 MDB 存储在文档服务器上以便进行备份。
大多数 IT 人员不喜欢 Access,但从业务角度来看,Access 可能非常有价值。
【讨论】:
众所周知,MS Access 在多用户环境中不稳定。 WEB 应用程序根据定义是多用户的。
所以恕我直言,将 MS Access 作为底层数据库是自找麻烦。至少使用 SQL Express(它是免费的)
【讨论】:
从 Access 升级到 MS-SQL 时您将面临的问题是应用程序的成本投资很大。如果您的公司已经拥有适当的基础设施(许可、硬件......),那么您就不会费力去说服您的老板。
技术回答:
我想说你需要让你的老板知道访问数据库并不适合并发使用,Web 应用程序表明这是应用程序的预期目标。我的观点是,Access 用于数据库信息,一小群用户将简单地用于小型数据输入和查询。切勿使用 Access 构建企业级解决方案。
【讨论】:
如果您计划将 Microsoft Access 数据库升级到 SQL Server 2008,请使用 SQL Server Migration Assistant (SSMA) 而不是 MS 中内置的升迁向导
10+ tips for upsizing an Access database to SQL ServerAccess.
【讨论】:
您的老板可能喜欢使用 access/excel 做一些临时性的工作。如果您将数据库移动到 SQL Server Express,您可以使用 Access 及其链接表功能,让您的老板通过 Access 继续满足他的临时需求,同时将数据保存在 SQL Server Express 中。如果您保持链接表的名称与旧物理表的名称相同,那么他的所有报告和查询将应该会继续工作。
【讨论】:
我是 Access 推广者,但不适合在网站上使用,因为 Jet/ACE 不是线程安全的(尽管 Michael Kaplan 曾经说过,如果您通过 ADO/OLEDB 访问它是线程安全的;我不太明白数据库抽象层可以洗掉它所调用的底层数据库引擎的一个特征,但如果 MichKa 说,那 99% 的可能性是真的)。
现在,例外情况是,如果您使用它来制作将使用不同数据库的东西的原型,或者它是只读的,或者是可读写的,但只有极少数的用户。
Michael Kaplan 的网站 trigeminal.com 曾经使用 Jet 数据库作为后端(它可能仍然——我不知道 MichKa 曾经更改过它),当那是他的主要网站时,他报告说获得了 100K打了一天。但它是一个只读站点,所以符合我的限制。
有很多不同的替代方案,而且它们大多都易于使用,我只是不明白尝试使用 Jet/ACE 作为网站后端的意义。我永远不会自己做(我负责的所有网站都使用 MySQL)。
【讨论】:
简单地说,使用 MSSQL。 Express 版是免费的,它将为您提供从 Access 迁移所需的一切。这些文章专门讨论 Access 应用程序,但同样的问题会困扰您。
http://resources.zdnet.co.uk/articles/features/0,1000002000,39285074,00.htm
【讨论】: