我正在尝试使用Windows身份验证设置SQL Server登录和用户。
到目前为止,我所做的工作如下:
在我的电脑上添加了一个名为“User1”的新非管理员帐户。 PC被称为“DESKTOP”,因此完整的用户名是“DESKTOP \ User1”
使用“FROM WINDOWS”选项为此用户创建SQL Server登录名,以将SQL登录链接到我的PC登录名。用户被称为例如“桌面\用户1”。
使用“FOR LOGIN”选项为SQL Server登录创建数据库级用户,以将用户链接到SQL Server登录。
已验证新数据库用户不是“SysAdmins”组的成员,并且已启用登录并允许登录访问。
退出我的管理员Windows帐户并以“User1”身份登录。我成功登录。
启动SSMS,确保用户名设置为“DESKTOP \ User1”,并选择“Windows身份验证”。
当我按下“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身份验证。
提前致谢。
答案 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];