【发布时间】:2016-10-06 07:29:02
【问题描述】:
我在 Classic ASP 中使用数据库时遇到了这种奇怪的行为。
我在公共位置有一个数据库:/database/database.mdb(www 可浏览位置)。 这被转换为以下物理:c:\Domains\mysite.com\database\database.mdb
我决定更改数据库位置并将其放在以下非公共位置,以增加安全性:c:\Domains\Contents\database.mdb
所有的 ASP 脚本都可以访问这个位置并且它有足够的权限。
有些脚本可以处理同时打开和关闭的多个记录集,例如,在以下流程中:
|-database is opened
| |---recorset1 is opened
| |
| | |----recorset2 is opened
| | |
| | |----recorset2 is closed
| |
| | |-recorset3 is opened
| | |
| |---recorset1 is closed
| |
| |-recorset3 is closed
|
|-database is closed
问题是这样的:当我在公共位置 (c:\Domains\mysite.com\database\database.mdb) 使用数据库时 - 上面描述的使用记录集的工作效果很好。但是当我在这个非公共位置 (c:\Domains\Contents\database.mdb) 使用数据库时,我得到以下信息 错误:
Microsoft JET 数据库引擎错误“80004005”
无法使用'';文件已在使用中。
我有两个问题:
- 这怎么可能? IIS 是否将公共 http 文件与“本地”文件不同?我该如何解决这个问题?
- 这真的增加了安全性吗?真的有效吗?
【问题讨论】:
-
I had a database in a public location: /database/database.mdb (www browsable location).这是一场灾难。安全问题。 -
But when I use the database in this non public location (c:\Domains\Contents\database.mdb) I get the following error:您的 IUSR 用户是否拥有对该数据库的读/写权限? -
为什么在 2016 年人们仍在尝试使用 Access 数据库进行 Web 开发?省去很多麻烦并切换到SQL Server Express,它免费、高效、可扩展。
-
复杂?我在本地运行 SQL Server Express,一旦我准备好真正的服务器环境,detech,将 mdf 和 ldf 文件复制到服务器,附加并离开。你可能不那么复杂,但 Access 从来没有被设计为在多用户环境中工作(例如点工作组文件......yuk!)所以你实际上给自己更多的悲伤然后在真正的多用户环境中工作-用户关系数据库。
-
也许这是一个愚蠢的问题,但是当您尝试在您的网站中查看数据时,您是否在 Access 桌面应用程序中打开了您的数据库?
标签: ms-access iis asp-classic database-connection vps