電子書籍の厳選無料作品が豊富!

SQLServer2005で、ユーザーのデータベースロールメンバシップ(db_datareader、db_datawriter等のexec sp_helploginsで取得できる情報)をカタログビューを読むことで取得可能でしょうか。
(ユーザー一覧はsysusersを読み取っています)

A 回答 (2件)

簡単な情報だけでよければ



SELECT
 loginname,
 sid,
 dbname,
 language
FROM
 master.dbo.syslogins

で出せます。

(master.dbo.sp_helplogins自体は、master.dbo.sysloginsを見てますので。)
(厳密にいうと、master.dbo.sp_helplogins以外の情報も
いろいろと取得してから結果を表示してますが)

参考になれば、幸いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
できればサーバーロールだけでなくデータベースロールメンバシップが取得できるとうれしいです。

お礼日時:2007/09/19 16:52

という話になると、無理ですね。



sp_helploginsは、いろんなところからシステムビューを取得し、
TempDBを一旦生成してから、結果を表示する仕組みにしてますので
単純なビュー化は、無理です。

もしやるのであれば、

sp_helptext N'[master].[dbo].[sp_helplogins]' と
sp_helptext N'[master].[dbo].[sysusers]' 

でみると、「sp_helplogins」や「sysusers」のストアドソースを
見ることができますので、ソース内に書かれている重要箇所の
SQLをかいつまみながら、うまくJOINさせて、
独自ストアドをつくるしか方法がないと思います。

カタログビューでもできないことはないですが、
データベースロールメンバシップもという話になると、
sp_helploginsのストアドソースを活用して、
独自ストアドを用意するしか対処のしようがないと思います。
(残念ですが)

この辺りは、将来的(来年発売される SQL Server2008)には
システムビューとして、用意してくれないかなと思うところでは
あります。
    • good
    • 0
この回答へのお礼

返信遅くなり申し訳ありません。
ご回答ありがとうございました。

そうですか、やはり難しいようですね。
sp_helploginsの情報をそのまま取得するか考えます。

お礼日時:2007/10/12 16:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す