Windows身份验证不与SQL Server一起使用

时间:2013-11-06 19:35:06

标签: sql-server windows security windows-8 windows-authentication

我正在尝试使用Windows身份验证设置SQL Server登录和用户。

到目前为止,我所做的工作如下:

  1. 在我的电脑上添加了一个名为“User1”的新非管理员帐户。 PC被称为“DESKTOP”,因此完整的用户名是“DESKTOP \ User1”

  2. 使用“FROM WINDOWS”选项为此用户创建SQL Server登录名,以将SQL登录链接到我的PC登录名。用户被称为例如“桌面\用户1”。

  3. 使用“FOR LOGIN”选项为SQL Server登录创建数据库级用户,以将用户链接到SQL Server登录。

  4. 已验证新数据库用户不是“SysAdmins”组的成员,并且已启用登录并允许登录访问。

  5. 退出我的管理员Windows帐户并以“User1”身份登录。我成功登录。

  6. 启动SSMS,确保用户名设置为“DESKTOP \ User1”,并选择“Windows身份验证”。

  7. 当我按下“Connect”时,我看到一个错误,在事件日志中如下所示:

    Token based server access validation failed with an infrastructure error
    Server Name: DESKTOP
    Error Number: 18456
    Severity: 14
    State: 1
    Line Number: 65536
    

    阅读此内容,有人建议这是UAC错误。所以我以管理员身份运行SSMS。在Windows 8.1上它然后要求我使用系统管理员帐户登录 - 这是有效的 - 但后来我以“DESKTOP \ Administrator”登录到SQL Server而不是“DESKTOP \ User1”。

    为什么Windows无法将我的非管理员凭据传递给SQL Server并将我登录?这样做是为了(在将来的“域”中)用户可以使用非管理员权限访问SQL Server并使用Windows身份验证。

    提前致谢。

2 个答案:

答案 0 :(得分:2)

问题是BUILTIN \ Users组的登录权限已被禁用。

这必须覆盖单个用户帐户。 DESKTOP \ User1必须是该组的一部分,并且组级别权限会覆盖它。

答案 1 :(得分:0)

我假设您在SQL Server事件日志中有以下消息:

Login failed for users ‘DESKTOP\User1’. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: xxx.xxx.xxx.xxx]
Error: 18456, Severity: 14, State: 12

状态12表示SQL Server能够对您进行身份验证,但无法使用基础Windows权限进行验证。

尝试以管理员身份登录服务器并运行以下命令:

GRANT CONNECT SQL TO [DESKTOP\User1];
GRANT CONNECT ON ENDPOINT::"TSQL Default TCP" TO [DESKTOP\User1];