0

SQL Server 7.0 では、特定のデータベースのどのテーブルに対してどのユーザーが書き込みアクセス権を持っているかを調べる必要があります。

データベース内の各テーブルを調べて、それらのテーブルに付与されたアクセス権を確認することにより、Enterprise Manager でこれを実行できることはわかっていますが、データベースには数百のテーブルがあります。私はほんの一握りのユーザーにしか関心がないので、むしろユーザーからアプローチしたいと思います。

これを実現するためにシステム テーブルで実行できるクエリはありますか? Enterprise Manager による別のアプローチはありますか?

私が求めているのは、基本的に次のようなものです。

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

1 に答える 1

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) から構築されます。

私を正しい道に導いてくれたマット・レイシー (そしてグーグル!) に感謝します: http://blog.mrlacey.co.uk/2007/06/checking-database-permissions-in-sql.html

于 2009-10-14T11:52:38.013 に答える