SQL Server 2000について質問です。ストアドプロシージャのパーミッションを調べるには、Enterprise Managerより、該当SPを右クリックしてプロパティを出し、Permissionsボタンをクリックします。同じ結果をどうやったらTSQLで取得できますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:dash_komiya No.1

回答回数34ベストアンサー獲得回数0

ポイント30pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

EXEC sp_helprotect [プロシージャ名], @permissionarea=’o’

で権限一覧を取得できます。


ちなみにEnterprise Managerはこのプロシージャではなく、sysprotectsテーブルから直接取得しているようです。

もしそちらを知りたいのであれば「Permissionsボタンをクリック」するときにプロファイラを立ち上げとくと、長々としたクエリを見ることができますよ。

id:akibare

すばらしい。ありがとうございます。

2005/08/01 16:04:05
id:cx20 No.2

回答回数607ベストアンサー獲得回数108

ポイント30pt

「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」システムテーブルの説明です。

id:akibare

すばらしい。ありがとうございます。

2005/08/01 16:05:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません