权限问题答疑

最常见的问题之一是文件夹或文件权限不足。如果您的数据库位于 Windows 2000 或 Windows XP 计算机上,并且您在尝试从 Web 浏览器或以“实时”视图查看动态页时收到错误消息,则该错误可能是由权限问题引起的。

试图访问数据库的 Windows 帐户没有足够的权限。如果已对页面设置保护以只允许经过身份验证的访问,则该帐户可能是匿名 Windows 帐户(默认情况下为 IUSR_computername)或特定的用户帐户。

您必须更改权限,向 IUSR_computername 帐户提供正确的权限,这样 Web 服务器才能访问该数据库文件。此外,包含该数据库文件的文件夹还必须设置某些权限才能向该数据库写入。

如果打算以匿名方式访问该页,请向 IUSR_computername 帐户提供对该文件夹和数据库文件的完全控制权限,如以下步骤所述。

此外,如果使用 UNC (ServerShare) 引用数据库的路径,请确保“共享权限”向 IUSR_computername 帐户提供完全访问权限。即使共享位于本地 Web 服务器,此步骤仍然适用。

如果从另一个位置复制数据库,它可能不会从目标文件夹继承权限,这时您必须更改数据库的权限。

检查或更改数据库文件权限 (Windows XP)

  1. 确保您在计算机上拥有管理员权限。

  2. Windows 资源管理器中,找到该数据库文件或包含该数据库的文件夹,右键单击该文件或文件夹,然后选择“属性”。

  3. 选择“安全”选项卡。

    注:此步骤仅适用于 NTFS 文件系统中。如果是 FAT 文件系统,则该对话框没有“安全”选项卡。

  4. 如果 IUSR_computername 帐户未在“组或用户名称”列表中列出,请单击“添加”按钮来添加该帐户。

  5. 在“选择用户或组”对话框中,单击“高级”。

    对话框随即更改以显示更多的选项。

  6. 单击“位置”并选择计算机名称。

  7. 单击“开始查找”以显示与该计算机关联的帐户名称的列表。

  8. 选择 IUSR_computername 帐户并单击“确定”,然后再次单击“确定”以清除该对话框。

  9. 若要赋予 IUSR 帐户完全权限,请选择“完全控制”然后单击“确定”。

检查或更改数据库文件权限 (Windows 2000)

  1. 确保您在计算机上拥有管理员权限。

  2. Windows 资源管理器中,找到该数据库文件或包含该数据库的文件夹,右键单击该文件或文件夹,然后选择“属性”。

  3. 选择“安全”选项卡。

    注:  此步骤仅适用于 NTFS 文件系统中。如果是 FAT 文件系统,则该对话框没有“安全”选项卡。

  4. 如果“文件权限”对话框中的 Windows 帐户中没有列出 IUSR_computername 帐户,请单击“添加”按钮添加该帐户。

  5. 在“选择用户、计算机或组”对话框中,从“查找范围”菜单中选择计算机名称以显示与该计算机关联的帐户名称的列表。

  6. 选择 IUSR_computername 帐户,然后单击“添加”。

  7. 若要赋予 IUSR 帐户完全权限,请从“访问类型”菜单中选择“完全控制”,然后单击“确定”。

    对于所添加的安全设置,可以设置权限,以便对包含该数据库的 Web 文件夹禁用读权限。将不允许浏览该文件夹,但网页仍可以访问该数据库。

    有关 IUSR 帐户和 Web 服务器权限的更多信息,请参阅 Adobe 支持中心上的以下技术说明:

    • Understanding anonymous authentication and the IUSR account(了解匿名身份验证和 IUSR 帐户),网址为 www.adobe.com/go/authentication_cn

    • Setting IIS web server permissions(设置 IIS Web 服务器权限),网址为 www.adobe.com/go/server_permissions_cn

Microsoft 错误信息答疑

如果您将 Internet Information Server (IIS) 与 Microsoft 数据库系统(例如 Access 或 SQL Server)一起使用, 则从服务器请求动态页时就会出现这些 Microsoft 错误消息。

注:Adobe 不对 Microsoft Windows 和 IIS 等第三方软件提供技术支持。如果这些信息无法解决您的问题,请与 Microsoft 技术支持部门联系或访问 Microsoft 支持网站,网址为 http://support.microsoft.com/。

[参考]80004005 -- 未发现数据源名称并且未指定默认驱动程序

当您试图在 Web 浏览器中或以“实时”视图查看动态页时,会出现此错误。根据您的数据库和 Web 服务器的具体情况,该错误信息可能有所不同。其它形式包括:

  • 80004005 - 驱动程序的 SQLSetConnectAttr 失败

  • 80004005 - 常规错误:无法打开注册表项“DriverId”

    可能的原因和解决方案如下:

  • 页面无法找到 DSN。确保已经在 Web 服务器和本地计算机上创建了 DSN。

  • DSN 可能已设置为用户 DSN,而不是系统 DSN。请删除用户 DSN 并创建一个系统 DSN 取代它。

    注:如果不删除用户 DSN,则重复的 DSN 名称会产生新的 ODBC 错误。

如果使用 Microsoft Access,则可能数据库文件 (.mdb) 已锁定。此锁定可能是因不同名称的 DSN 访问该数据库引起的。在 Windows 资源管理器中,从包含数据库文件 (.mdb) 的文件夹中搜索锁定文件 (.ldb) 并删除该 .ldb 文件。如果另一个 DSN 正指向同一数据库文件,请删除该 DSN,以防止以后出错。请在进行任何更改后重新启动计算机。

[参考]80004005 -- 无法使用“(未知)”;文件已在使用中

当您使用 Microsoft Access 数据库并试图在 Web 浏览器中或以“实时”视图查看动态页时,会出现此错误。此错误消息的另一形式为“80004005 -- Microsoft Jet 数据库引擎无法打开文件(未知)”。

可能的原因是存在权限问题。具体的原因和解决方案如下:

  • Internet Information Server 所使用的帐户(通常是 IUSR)对于某个基于文件的数据库或包含该文件的文件夹可能没有正确的 Windows 权限。请在用户管理器中检查该 IIS 帐户 (IUSR) 的权限。

  • 您可能没有创建或销毁临时文件所需的权限。请检查对该文件和文件夹的权限。确保您具有创建或销毁任何临时文件所需的权限。临时文件通常创建在数据库所在的文件夹中,但也可能创建到其它文件夹(如 /Winnt)中。

  • 在 Windows 2000 中,可能需要为 Access 数据库 DSN 更改超时值。若要更改超时值,请选择“开始”>“设置”>“控制面板”>“管理工具”>“数据源 (ODBC)”。单击“系统”选项卡,突出显示正确的 DSN,然后单击“配置”按钮。单击“选项”按钮并将“页面超时”值更改为 5000

    如果仍然有问题,请参阅下面的 Microsoft 知识库文章:

  • PRB: 80004005“无法使用‘(未知)’;文件已在使用中”(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q174943)。

  • PRB: Microsoft Access Database Connectivity Fails in Active Server Pages(Active Server Pages 中的 Microsoft Access 数据库连接失败),网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q253604。

  • PRB: Error “Cannot Open File Unknown” Using Access(PRB:使用 Access 时“无法打开未知文件”出现错误),网址为:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q166029。

[参考]80004005 -- 登录失败()

当您使用 Microsoft SQL Server 并试图在 Web 浏览器中或以“实时”视图查看动态页时,会出现此错误。

如果 SQL Server 不接受或不能识别您所提交的登录帐户或密码(假定您使用的是标准安全机制),或者如果 Windows 帐户没有映射到 SQL 帐户(假定您使用的是集成安全机制),则 SQL Server 会产生此错误。

可能的解决方案如下:

  • 如果使用标准安全机制,则可能是帐户名称和密码不正确。请尝试使用系统管理员帐户和密码(UID=“sa”且无密码),但这必须在连接字符串语句行中定义。(DSN 不存储用户名和密码。)

  • 如果使用集成安全机制,则请检查调用该页的 Windows 帐户,并找到它映射的 SQL 帐户(如果存在)。

  • SQL Server 不允许在 SQL 帐户名称中使用下划线。如果有人手动将 Windows IUSR_machinename 帐户映射到同名的 SQL 帐户,则会失败。应该将所有使用下划线的帐户映射到 SQL 上不使用下划线的帐户名称。

[参考]80004005 -- 操作必须使用一个可更新的查询

当事件更新记录集或在记录集中插入数据时会发生此错误。

可能的原因和解决方案如下:

  • 对包含数据库的文件夹所设置的权限具有太多限制。IUSR 特权必须设置为读/写。

  • 对数据库文件本身的权限未使完全的读/写特权生效。

  • 数据库可能位于 Inetpub/wwwroot 目录之外。如果数据库不在 wwwroot 目录中,则您可以查看和搜索数据,但不能更新数据。

  • 记录集基于不可更新的查询。联接正是数据库中的一种不可更新查询。请重新构造查询,以使其可以更新。

    有关此错误的详细信息,请参阅 Microsoft 知识库中的“ASP 'Error The Query Is Not Updateable' When You Update Table Record”(PRB:更新表记录时出现 ASP 错误“查询不可更新”),网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q174640。

[参考]80040e07 -- 标准表达式中数据类型不匹配

当服务器尝试处理包含“插入记录”或“更新记录”服务器行为的页面,并且该服务器行为试图将 Microsoft Access 数据库中“日期/时间”列的值设置为空字符串 ("") 时,会出现此错误。

Microsoft Access 具有强数据类型;对于给定的列值有一套严格的规则。SQL 查询中的空字符串值不能存储在 Access“日期/时间”列中。目前已知的唯一解决方法,是避免将空字符串 ("") 或其它任何与该数据类型的指定值范围不对应的值插入 Access 中的“日期/时间”列,也不要使用这些值更新“日期/时间”列。

[参考]80040e10 -- 参数过少

当数据库表中不存在 SQL 查询中所指定的列时,会出现此错误。请对照 SQL 查询检查数据库表中的列名称。此错误通常是因拼写错误引起。

[参考]80040e10 -- COUNT 字段错误

当您在 Web 浏览器中预览包含“插入记录”服务器行为的页并尝试使用它在 Microsoft Access 数据库中插入记录时,此错误会出现。

您可能试图将记录插入字段名中包含问号 (?) 的 数据库字段。对于某些数据库引擎(包括 Microsoft Access),问号是特殊字符,不应将它用于数据库表或字段的名称。

请打开数据库系统并从字段名中删除问号 (?), 然后更新页上引用该字段的服务器行为。

[参考]80040e14 -- INSERT INTO 语句中的语法错误

当服务器尝试处理包含“插入记录”服务器行为的页时,会发生此错误。

此错误通常是因数据库中字段、对象或变量的名称存在以下一个或多个问题所致:

  • 将保留字用作名称。大多数数据库都有一组保留字。例如,“date”是保留字,因而不能用于数据库中的列名称。

  • 名称中使用特殊字符。特殊字符的示例包括:

    . / * : ! # & - ?

  • 在名称中使用空格。

    当为数据库中的对象定义了输入掩码并且插入的数据与该掩码不符时,也会出现此错误。

    若要解决该问题,在指定数据库中的列名称时,请避免使用“date”、“name”、“select”、“where”和“level”等保留字。另外,请清除空格和特殊字符。

    有关常见数据库系统的保留字的列表,请参阅以下网页:

  • Microsoft Access,网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q209187

  • Microsoft SQL Server,网址为 http://msdn.microsoft.com/library/default.asp?url=/library/zh-ch/tsqlref/ts_ra-rz_9oj7.asp

  • MySQL,网址为 http://dev.mysql.com/doc/mysql/en/reserved-words.html

[参考]80040e21 -- 插入或列新时发生 ODBC 错误

当服务器尝试处理包含“更新记录”或“插入记录”服务器行为的页时,会出现此错误。数据库无法处理该服务器行为尝试执行的更新或插入操作。

可能的原因和解决方案如下:

  • 该服务器行为正尝试更新数据库表的自动编号字段或者尝试在自动编号字段中插入记录。由于自动编号域由数据库系统自动填充,因此任何从外部用值填充这些域的尝试都会失败。

  • 服务器行为正在更新或插入的数据对于该数据库字段而言是错误的类型,例如将日期插入布尔型(是/否)字段,将字符串插入数值字段,或者将格式不正确的字符串插入“日期/时间”字段。

[参考]800a0bcd -- BOF 或 EOF 为 True

当您试图在 Web 浏览器中或以“实时”视图查看动态页面时,会出现此错误。

该问题在动态页试图显示空记录集中的数据时出现。若要解决该问题,请将“显示区域”服务器行为应用于要在页上显示的动态内容,如下所述:

  1. 突出显示页上的动态内容。

  2. 在“服务器行为”面板上,单击加号 (+) 按钮并选择“显示区域”>“如果记录集不为空则显示区域”。

  3. 选择提供动态内容的记录集并单击“确定”。

  4. 对于页上的每个动态内容元素重复步骤 1 至 3。

MySQL 错误信息答疑

在测试到 MySQL 4.1 的 PHP 数据库连接时可能会遇到的一条常见错误消息是:“客户端不支持请求的验证协议。请考虑升级 MySQL 客户端。”

您可能必须回复到较早的 MySQL 版本,或者安装 PHP 5 并复制一些动态链接库 (DLL)。有关详细说明,请参阅设置 PHP 开发环境。

                                                                                   

 






,