将访问权限迁移到 ASP.NET

Posted

技术标签:

【中文标题】将访问权限迁移到 ASP.NET【英文标题】:Migrate Access to ASP.NET 【发布时间】:2010-03-01 16:48:39 【问题描述】:

目前的应用程序是一种基于 MS Access 构建的 CRM 应用程序。该应用程序供内部使用。我的工作是将它迁移到基于 ASP.NET Web 的应用程序。现在老板要求保留Access作为数据库并针对它开发ASP.NET代码。

我的问题是,在 ASP.NET 应用程序中使用 Access 作为数据库有什么缺点吗? (例如乐观并发问题?)我应该说服老板将Access升级到MS-SQL吗?

非常感谢!

【问题讨论】:

【参考方案1】:

我们已成功使用 Access 作为网站的后端。它很便宜,可以被熟练的程序员有效地使用,并且您可以将 MDB 存储在文档服务器上以便进行备份。

大多数 IT 人员不喜欢 Access,但从业务角度来看,Access 可能非常有价值。

【讨论】:

很高兴知道你的故事。请问您网站上平均有多少访问者,您是否遇到过使用 Aceess 作为后端数据库的问题? 它适用于最多五个同时用户,就像一个小时为 100 人编写应用程序一样。我再说一遍,我是说 Access 具有商业价值,而不是说编写代码很愉快 :)【参考方案2】:

众所周知,MS Access 在多用户环境中不稳定。 WEB 应用程序根据定义是多用户的。

所以恕我直言,将 MS Access 作为底层数据库是自找麻烦。至少使用 SQL Express(它是免费的)

【讨论】:

为什么网络应用程序根据定义是多用户的?并非每个 ASP.NET 应用程序都是具有公共 URL 的网站 :) 访问不是“在多用户环境中出了名的不稳定”。当被无知和无能的人使用时,它“出了名的不稳定”。但是几乎任何您能想到的数据库也是如此(即,问题不在于 Access)。我同意的最终建议,但我反对第一句话中的愚蠢/无知/偏执。 @David-W-Fenton 用更激烈的偏见与偏见作斗争 - 好吧,看看我们会走多远 @mfeingold:您是否认为第一句话实际上是不正确的并且措辞是不必要的好斗和情绪化的形式?如果不是,那为什么我的反应不正确?如果你确实提出异议,那么你真的不应该发帖,因为你显然不知道事实。 @David-W-Fenton 为什么不合适?除了因为与你的观点不同而称某人愚蠢/无知/偏执?它不是【参考方案3】:

从 Access 升级到 MS-SQL 时您将面临的问题是应用程序的成本投资很大。如果您的公司已经拥有适当的基础设施(许可、硬件......),那么您就不会费力去说服您的老板。

技术回答:

我想说你需要让你的老板知道访问数据库并不适合并发使用,Web 应用程序表明这是应用程序的预期目标。我的观点是,Access 用于数据库信息,一小群用户将简单地用于小型数据输入和查询。切勿使用 Access 构建企业级解决方案。

【讨论】:

我明白你的意思,但我要构建的 Web 应用程序是供内部使用的。 10-20人同时使用。你认为 Access 有能力吗? Access 可能可以处理这么多用户...问题是我亲眼目睹了这样的应用程序会发生什么。他们从小团体开始,用户数量不断增长。使用 SqlServer 构建它,免去以后搬家的痛苦。【参考方案4】:

如果您计划将 Microsoft Access 数据库升级到 SQL Server 2008,请使用 SQL Server Migration Assistant (SSMA) 而不是 MS 中内置的升迁向导

10+ tips for upsizing an Access database to SQL ServerAccess.

【讨论】:

谢谢。我已经尝试过这个工具。但是升级过程中出错太多了。 @Smallville:你能举一些这些错误的例子吗?有人可能会帮助你... 我得到的错误类似于“有关更多详细信息,请参阅错误日志”。但是我找不到错误日志,也不知道是什么原因造成的问题【参考方案5】:

您的老板可能喜欢使用 access/excel 做一些临时性的工作。如果您将数据库移动到 SQL Server Express,您可以使用 Access 及其链接表功能,让您的老板通过 Access 继续满足他的临时需求,同时将数据保存在 SQL Server Express 中。如果您保持链接表的名称与旧物理表的名称相同,那么他的所有报告和查询应该会继续工作。

【讨论】:

【参考方案6】:

我是 Access 推广者,但不适合在网站上使用,因为 Jet/ACE 不是线程安全的(尽管 Michael Kaplan 曾经说过,如果您通过 ADO/OLEDB 访问它是线程安全的;我不太明白数据库抽象层可以洗掉它所调用的底层数据库引擎的一个特征,但如果 MichKa 说,那 99% 的可能性是真的)。

现在,例外情况是,如果您使用它来制作将使用不同数据库的东西的原型,或者它是只读的,或者是可读写的,但只有极少数的用户。

Michael Kaplan 的网站 trigeminal.com 曾经使用 Jet 数据库作为后端(它可能仍然——我不知道 MichKa 曾经更改过它),当那是他的主要网站时,他报告说获得了 100K打了一天。但它是一个只读站点,所以符合我的限制。

有很多不同的替代方案,而且它们大多都易于使用,我只是不明白尝试使用 Jet/ACE 作为网站后端的意义。我永远不会自己做(我负责的所有网站都使用 mysql)。

【讨论】:

【参考方案7】:

简单地说,使用 MSSQL。 Express 版是免费的,它将为您提供从 Access 迁移所需的一切。这些文章专门讨论 Access 应用程序,但同样的问题会困扰您。

http://resources.zdnet.co.uk/articles/features/0,1000002000,39285074,00.htm

https://web.archive.org/web/1/http://techrepublic%2ecom%2ecom/5208-6230-0.html?forumID=102&threadID=205509&messageID=2136367

【讨论】:

以上是关于将访问权限迁移到 ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET权限如何设置?

ASP.NET 登录以授予对特定类型人群的访问权限

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限

具有访问权限的asp.net动态数据

如何使用 Asp.Net Core 实现基于权限的访问控制

ASP.Net 仅向经过身份验证的用户提供访问/浏览权限