2

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

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

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

  2. 使用“FROM WINDOWS”选项为该用户创建一个 SQL Server 登录名,将 SQL 登录名链接到我的 PC 登录名。用户被称为例如“DESKTOP\User1”。

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

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

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

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

当我按下“连接”时,我看到了一个错误,事件日志中的内容如下:

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”而不是“DESKTOP\User1”身份登录到 SQL Server。

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

提前致谢。

4

2 回答 2

3

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

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

于 2013-11-07T23:56:21.433 回答
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];
于 2013-11-07T15:21:42.363 回答