在SQL Server 2005 Express中使用登录,用户和权限

时间:2011-02-26 05:51:55

标签: sql authentication sql-server-2005-express

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

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

CREATE LOGIN bob WITH PASSWORD = 'bobpass'. 

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

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

它给出了输出:guest

为什么会这样?

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

1 个答案:

答案 0 :(得分:3)

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

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