人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: akibare
●カテゴリ:コンピュータ
✍キーワード:Enterprise SP SQL Server クリック パーミッション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● dash_komiya
●30ポイント

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

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

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

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


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

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

◎質問者からの返答

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


2 ● cx20
●30ポイント

http://www.microsoft.com/japan/msdn/library/ja/tsqlref/ts_sp_hel...

sp_helprotect

「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」を表すようです。

http://www.microsoft.com/japan/msdn/library/ja/tsqlref/ts_sys-p_...

sysprotects

参考情報です。「sysprotects」システムテーブルの説明です。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ