http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...
MSDN ライブラリ サイト移行に関する重要なお知らせ
EXEC sp_helprotect [プロシージャ名], @permissionarea=’o’
で権限一覧を取得できます。
ちなみにEnterprise Managerはこのプロシージャではなく、sysprotectsテーブルから直接取得しているようです。
もしそちらを知りたいのであれば「Permissionsボタンをクリック」するときにプロファイラを立ち上げとくと、長々としたクエリを見ることができますよ。
「sp_helprotect」を利用することで
データベース内の指定オブジェクトの権限を
取得することが可能です。
<sp_helprotect の使用例>
exec sp_helprotect ’sp_adduser’
<実行結果>
Owner Object Grantee Grantor ProtectType Action Column
------ -------------------- ------------ ------- ----------- -------------- ------
dbo sp_adduser public dbo Grant Execute .
http://www.hatena.ne.jp/1106552240
人力検索はてな - SQLServer2000でDBのデータファイル、トランザクションログの容量を取得するSQL。 また、DB全体のサイズや使用可能領域も知りたいです。 Enterprise ManagerにてDBのプロパ..
また、参考情報ですが、
「SQL プロファイラ」というツールを利用すると、
Enterprise Manager の動作をトレースすることが可能です。
以下は「sp_adduser」の「権限」を表示させたときのプロファイラの実行結果です。
これによると、
select name, owner = user_name(uid), crdate, objtype = sysstat & 0xf, id, deltrig from dbo.sysobjects o where power(2, sysstat & 0xf) & 4607 != 0 and not (OBJECTPROPERTY(id, N’IsDefaultCnst’) = 1 and category & 0x0800 != 0) and o.name not like N’#%’ and o.id = object_id(N’[dbo].[sp_adduser]’)
go
select a = o.name, b = user_name(o.uid), user_name(p.uid), o.sysstat & 0xf, p.id, action, protecttype from dbo.sysprotects p, dbo.sysobjects o where o.id = p.id and p.action in (193, 195, 196, 197, 224, 26) and p.id = 850102069 order by a, b
go
を実行していることが分かります。
<実行結果>
name owner crdate objtype id deltrig
---------- ----- ----------------------- ------- ----------- -----------
sp_adduser dbo 2000-08-06 01:31:04.170 4 850102069 0
a b id action protecttype
---------- ----- -------- ------ ----------- ------ -----------
sp_adduser dbo public 4 850102069 224 205
sysprotects のリファレンスを見ると「224 = EXECUTE」を表すようです。
参考情報です。「sysprotects」システムテーブルの説明です。
すばらしい。ありがとうございます。
すばらしい。ありがとうございます。