首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 网站技术-> 数据库开发-> 探索Access数据库最佳NTFS权限设置(1)
探索Access数据库最佳NTFS权限设置(1)
  我们知道ASP.NET中使用ADO.NET访问数据库,通过OleDb的连接可以访问Access数据库(我们非常常用的低端数据库之一)。本文讨论了ASP.NET中可能看到的若干错误提示,从中可以发现Access 2000和Access XP创建的数据库文件在访问出现错误时会给出不太相同的错误提示。另一个要点是,希望通过此文,使大家对ASP.NET中Access数据库文件的NTFS权限设置得到新的认识。

(一)实验过程

为了叙述方便,举个具体例子做实验:应用程序为/test,数据库存放在D:\wwwroot\test\data\db1.mdb,我们已经知道在ASP.NET中是以一个叫做ASPNET虚拟用户的身份访问数据库的,我们需要给这个账户以特定的NTFS权限才能使ASP.NET程序正常运行。

为了得到最严格的NTFS权限设置,实验开始时我们给程序最低的NTFS权限:

a)D:\wwwroot\test\data\文件夹的给用户ASPNET以如下权限:

                 允许  拒绝
完全控制          □    □
修改              □    □
读取及运行        √    □
列出文件夹目录    √    □
读取              √    □
写入              □    □


b)D:\wwwroot\test\data\db1.mdb文件本身给用户ASPNET以如下权限:

√ 允许将来自父系的可继承权限传播给该对象


1.1对于某个只包含有“SELECT”命令的aspx程序,上述权限设置运行时无障碍,即:上述权限已经满足这类程序的运行了。

1.2对于包含有“UPDATE”“INSERT”“UPDATE”等命令的aspx程序

(a)如果db1.mdb是Access 2000创建的数据库,出现如下错误:

“/test”应用程序中的服务器错误

--------------------------------------------------------------------------------

Microsoft Jet数据库引擎打不开文件'D:\wwwroot\test\data\'。它已经被别的用户以独占方式打开,或没有查看数据的权限。
说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.Data.OleDb.OleDbException:Microsoft Jet数据库引擎打不开文件'D:\wwwroot\test\data\'。它已经被别的用户以独占方式打开,或没有查看数据的权限。


(b)如果db1.mdb是Access XP创建的数据库,出现如下错误:


“/test”应用程序中的服务器错误

--------------------------------------------------------------------------------

操作必须使用一个可更新的查询。
说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.Data.OleDb.OleDbException:操作必须使用一个可更新的查询。


(c)原因初步分析:因为包含有“UPDATE”“INSERT”“UPDATE”等命令,需要对数据库文件本身进行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。

a)D:\wwwroot\test\data\文件夹不变

b)D:\wwwroot\test\data\db1.mdb文件本身给用户ASPNET以如下权限:

                 允许  拒绝
完全控制          □    □
修改              □    □
读取及运行        √    □
列出文件夹目录    √    □
读取              √    □
写入              √    □


1.3放开权限后继续实验

(a)如果db1.mdb是Access 2000创建的数据库,出现如下错误:

“/test”应用程序中的服务器错误

--------------------------------------------------------------------------------

不能锁定文件。
说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.Data.OleDb.OleDbException:不能锁定文件。


(b)如果db1.mdb是Access XP创建的数据库,没有出现错误。

(c)原因初步分析:我们发现在打开Access数据库时,同时会在所在目录生成一个同名的*.ldb文件,这是一个Access的锁定标记。鉴于此,我们猜测,用户ASPNET访问Access数据库时,也需要生成一个锁定标记,而该目录没有允许其写入,因此出错。至于Access XP创建的数据库为什么没有这个错误,原因还不得而知。

我们进一步放开权限:

a)D:\wwwroot\test\data\文件夹给用户ASPNET以如下权限:

                 允许  拒绝
完全控制          □    □
修改              □    □
读取及运行        √    □
列出文件夹目录    √    □
读取              √    □
写入              √    □


b)D:\wwwroot\test\data\db1.mdb文件本身给用户ASPNET以如下权限:

√ 允许将来自父系的可继承权限传播给该对象


1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的“最低权限”。

(a)如果db1.mdb是Access 2000创建的数据库,我们会发现一个小问题:生成的*.ldb文件不会自己删除,访问后该文件依然存在,但这个问题不会影响ASP.NET的正常运行。

(b)如果db1.mdb是Access XP创建的数据库,没有出现上面类似问题。

(c)原因初步分析:我们仅仅是给了ASPNET以写入文件夹的权限,没有给它修改的权限,所以文件一旦写入,便无法修改其内容,*.ldb也就删除不掉了。

如果非要解决这个问题,进一步放开权限为:

a)D:\wwwroot\test\data\文件夹给用户ASPNET以如下权限:

                 允许  拒绝
完全控制          □    □
修改              √    □
读取及运行        √    □
列出文件夹目录    √    □
读取              √    □
写入              √    □


b)D:\wwwroot\test\data\db1.mdb文件本身给用户ASPNET以如下权限:

√ 允许将来自父系的可继承权限传播给该对象


1.5附带实验另一种情形:我们把db1.mdb在Access打开编辑,同时访问ASP.NET。

(a)如果db1.mdb是Access 2000创建的数据库,我们发现并没有出现什么问题。

(b)如果db1.mdb是Access XP创建的数据库,出现如下错误:

“/zhao”应用程序中的服务器错误。

--------------------------------------------------------------------------------

不能使用'';文件已在使用中。
说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.Data.OleDb.OleDbException:不能使用'';文件已在使用中。


(c)原因初步分析:Access数据库是单用户单线程的数据库,我们在Access里面打开编辑数据库文件时其实是以当前Windows用户(比如Administrator)身份打开数据库,而ASP.NET默认使用的是ASPNET虚拟用户(隶属于Users组),级别低于Administrator,无法和Administrator“抢夺”权限,所以出现冲突错误。至于Access 2000忽略这个问题的情形我们也不必做讨论了,可能是Access 2000没有考虑那么多因素吧。

1.6再附带一种情形:将db1.mdb的属性改为“只读”,无论是Access 2000还是Access XP都将分别出现与1.2中各自的错误相同的错误提示。

在百度中查找更多探索Access数据库最佳NTFS权限设置(1)的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ 探索Access数据库最佳NTFS权限设置(1)”来源于网络,版权归作者所有!勿用于商业用途。

数据库开发

ASP技术
PHP技术
JSP技术
.NET技术
服务器技术
数据库开发
其它类

本类阅读TOP10

·SQL Server 存储过程的分页
·SQL Server的5年期待
·16进制数转10进制数
·Mssql和Mysql的安全性分析
·一起特殊中文全文检索问题的解决
·使用sql server中的全文索引
·MySQL查询优化系列讲座之数据类型与效率
·SQL Server CHARINDEX和PATINDEX详解
·MySQL查询优化系列讲座之查询优化器
·轻轻松松搞定数据库链接

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言