我使用Windows身份验证(管理员)连接到SQL Server。
然后,我为我的SQL Server 2005 Express创建了一个登录名:
CREATE LOGIN bob WITH PASSWORD = 'bobpass'.
现在,我关闭了SQL Server&然后再次打开它&这次我将它与登录'bob'连接起来。
现在,我执行了这个:SELECT CURRENT_USER.
它给出了输出:guest
为什么会这样?
这是因为我没有在bob
登录中创建任何用户吗?
答案 0 :(得分:3)
CURRENT_USER将返回数据库主体(用户)。 bob
是服务器主体(登录)。如果您未授予对任何数据库的访问权限,并且未将bob添加到任何内置服务器安全组,则他将无法访问除master和tempdb之外的任何数据库。在这两个数据库中,他将被识别为guest
。这是默认设置,如果您在部署中从全新安装中更改了某些内容,您可能会注意到与此描述的不同之处(例如,您可能会发现bob
可以访问更多数据库,因为这些数据库已启用{{1} })。
所以基本上你猜对了:guest
是bob
因为他没有明确的数据库主体(用户),也不是guest
的成员(在这种情况下他会是每个数据库都有sysadmin
。