如何理解用户在SQL Server中获取数据库访问权限

时间:2015-09-21 05:46:37

标签: sql-server

我的任务是审核SQL Server的安全性。但是,当我查看SQL Server Management Studio中的登录时,我没有在主数据库旁边看到该登录名的复选框。如何确定登录有权访问哪些数据库?

2 个答案:

答案 0 :(得分:2)

是一个有用的系统存储过程,用于列出SQL登录帐户的所有映射用户。

语法:

sp_msloginmappings @Loginname , @Flags
  

@loginname:登录帐户名,如果未指定loginname,则返回登录帐户的结果(当前登录名)

     

@Flags:值可以是0和1,默认为0. 0表示在所有数据库中显示映射用户。 1表示如何在当前映射用户   数据库上下文

e.g 这是样本:

sp_msloginmappings 'sa'
show mapping user account info in all databases for login account 'sa'

sp_msloginmappings 'sa', 1
show mapping user account info in current databases context for login account 'sa'

答案 1 :(得分:0)

如果您以这种方式看到用户登录匹配,则登录可以访问数据库。

SELECT sp.name AS 'Login', dp.name AS 'User' 
FROM sys.database_principals dp 
  JOIN sys.server_principals sp 
    ON dp.sid = sp.sid 
ORDER BY sp.name, dp.name;

您可以在SQL Server 2005/2008中执行此操作