【发布时间】:2010-12-04 01:04:00
【问题描述】:
错误
数据库管理员报告 Microsoft SQL Server 2008 服务器端错误“无效登录”(错误 18456,严重性:14,状态:5)。
来自服务器日志的错误示例:
Dec 1 2010 10:12AM - Login failed for user '{Active Directory Name #1}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}]
Dec 1 2010 10:44AM - Login failed for user '{Active Directory Name #2}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #2}]
Dec 1 2010 2:03PM - Login failed for user '{Active Directory Name #3}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #3}]
Dec 1 2010 4:18PM - Login failed for user 'Admin'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}]
{Active Directory 名称} 与其登录名相同,但没有域。例如,全名是 {domain}\{Active Directory Name}。
用户“Admin”的错误来自与 {Active Directory Name #1} 相同的 IP 地址,该用户正在开发 Microsoft Access Visual Basic for Applications (VBA) 代码;我怀疑这源于需要使用适当的 Windows 身份验证连接字符串配置他对 VBA 的最小使用,即使他仅通过 ODBC DSN 链接访问数据。
环境
包含 ODBC 文件 DSN 的 Microsoft Access 2003(前端)数据库链接到只读 Microsoft SQL Server 2008(后端)数据库中的表。
我拥有前端数据库的管理员权限。我拥有后端数据库的只读安全权限,该数据库位于外部数据中心的托管服务器上。 DBA 已为 Windows 身份验证配置后端数据库。
最终用户使用 Active Directory 帐户登录其 PC,打开前端数据库,然后使用 Microsoft Access 查询设计器使用指向后端数据库的表链接生成报告。前端数据库不使用 Microsoft Access Jet Security(据我所知——没有登录提示)。
前端数据库不报告(可见)错误并产生预期结果。
ODBC 文件 DSN 内容
[ODBC]
DRIVER=SQL Server
Trusted_Connection=Yes
StatsLogFile={path}
StatsLog_On=Yes
DATABASE={dbname}
APP=Microsoft Data Access Components
Description={general description}
SERVER={server name}
为什么文件 DSN 链接可以正常工作,但会生成服务器端无效登录错误?谢谢。
【问题讨论】:
-
附加说明:表格链接在开发、测试和最终用户使用期间不会出现客户端错误。用户 1、2 和 3 是 Active Directory 组的成员,该组作为后端数据库上的用户创建并被授予角色 db_datareader。相同的 Active Directory 组已创建为服务器本身的登录名,并授予角色 db_datareader 和 public;登录名已正确映射到后端数据库上的用户。
-
注:改为反映2008年而不是2005年;我们的生产实例是2005,但开发环境是2008。
标签: sql-server-2008 odbc ms-access-2003