注意这里讨论的不是sql server内创建的账户,而是windows account和windows group访问sql server的问题。
很多时候windows用户并不是直接被授予了访问数据库instance的权限,而是因为他属于某个windows group而这个groups被授予了访问权限。
此时登陆sql server后,在security->logins中只能看到windows group,那么我们怎么确定这个用户的权限呢?
在SSMS中运行下的代码就可以:
DECLARE @user SYSNAME;
SET @user = SUSER_SNAME();
EXEC xp_logininfo @user, 'all';
返回结果的例子:
account name typeprivilege mapped login namepermission path
---------------------------------------------------------------
domainname\user useradmin domainname\userPROD\DBA
上面的结果说明该windows用户domainname\user是属于PROD\DBA 组的。同时由于这个组被授予了sysadmin的role,因此这个用户也有了admin权限。