SQL Server:找出哪些用户对哪些表具有写权限?

时间:2009-10-14 09:47:22

标签: sql-server database-permissions

在SQL Server 7.0中,我需要找出哪些用户对特定数据库中的哪些表具有写访问权。

我知道我可以在Enterprise Manager中执行此操作,方法是遍历数据库中的每个表并查看授予这些表的访问权限 - 但数据库中有几百个表。由于我只关心少数用户,我宁愿从用户那里接近它。

我是否可以在系统表上运行查询来实现此目的?是否有通过企业管理器的方法?

我所追求的是基本上所说的:

UserOne has write access to Table1, Table2 and Table3
UserTwo has write access to Table2 and Table3
etc.

1 个答案:

答案 0 :(得分:2)

SELECT u.name, o.name
FROM syspermissions p, sysobjects o, sysusers u
WHERE p.id = o.id
AND u.uid = p.grantee
AND u.name IN ('UserOne', 'UserTwo', 'UserThree')
AND o.xtype = 'U'
AND p.actadd = 27

魔法27由1(SELECT)+ 2(UPDATE)+ 8(INSERT)+ 16(DELETE)构建

感谢Matt Lacey(以及Google!)让我选择了正确的课程:http://blog.mrlacey.co.uk/2007/06/checking-database-permissions-in-sql.html