1

我使用 Windows 身份验证(管理员)连接到 SQL Server。

然后,我为我的 SQL Server 2005 Express 创建了一个登录名:

CREATE LOGIN bob WITH PASSWORD = 'bobpass'. 

现在,我关闭了 SQL Server,然后再次打开它,这次我将它与登录名“bob”连接起来。

现在,我执行了这个:SELECT CURRENT_USER.

它给出了输出:guest

为什么这样?

这是因为我没有在bob登录名中创建任何用户吗?

4

1 回答 1

3

CURRENT_USER 将返回一个数据库主体(一个用户)。bob是服务器主体(登录名)。如果您没有授予对任何数据库的访问权限并且您没有将 bob 添加到任何内置服务器安全组,那么他将无权访问除 master 和 tempdb 之外的任何数据库。在这两个数据库中,他将被识别为guest. 这是默认设置,如果您在部署中从全新安装中更改了某些内容,您可能会注意到与此描述的差异(例如,您可能会发现可以bob访问更多数据库,因为这些数据库已启用guest)。

所以基本上你猜对了:bobguest因为他没有明确的数据库主体(用户),也不是成员sysadmin(在这种情况下,他将dbo在每个数据库中)。

于 2011-02-26T06:14:34.690 回答