- PR -

SQL Server2000でログインしているユーザがアクセスできるデータベースの一覧を取得したい

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-04-06 11:22
こんにちは

件名のとおり、SQL Server2000+ADO.NET環境で、ログインしているユーザがアクセス
できるデータベースの一覧を取得したいのですが、どのシステムテーブルにアクセス
すればよろしいのでしょうか?

masterデータベースの select * from sysdatabases で、データベースの取得はでき
ますが、この方法だとログインしているユーザが使用できるかは分からないようです。

ご存知の方おられませんでしょうか?よろしくお願いします。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-04-06 11:41
今日は。

どういう風に書けば良いのかは別として。

データベースを指定して
ストアドプロシージャで「sp_table〜」のどれかを実行すれば取れるかと思いますので
実験してみて下さいな。 
sumida
会議室デビュー日: 2003/01/20
投稿数: 9
投稿日時: 2005-04-06 11:49
EXEC sp_helplogins 'ユーザ名'
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2005-04-06 11:50
↓これとか!?
http://www.sqlpassj.org/bunkakai/security/tips/050224.aspx
(リンク先を詳しく見てないので...外れの場合はご容赦)
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-04-06 17:54
こんにちは

返答ありがとうございます。
sp_helploginsはsaならいいのですが、自分で作ったログイン名だと、アクセス権限が
なくて実行できません。

自分で作ったログイン名でログインし、特にアクセス権限を付与しなくても、その
ログイン自身で使用できるデータベースを取得できないものでしょうか。

クエリアナライザのGUIでは、ログインしたユーザで使用できるデータベースの一覧が
GUI上部のコンボボックスに出てきます。あれと同じことをやってみたいのですが・・・

[ メッセージ編集済み 編集者: maru 編集日時 2005-04-06 17:57 ]
matu_tak
会議室デビュー日: 2003/02/06
投稿数: 13
投稿日時: 2005-04-06 18:15
松本@初投稿です。

>クエリアナライザのGUIでは、ログインしたユーザで使用できる
>データベースの一覧が GUI上部のコンボボックスに出てきます。
>あれと同じことをやってみたいのですが・
>
この機能は、アンドキュメンテッドな

master.dbo.sp_MShasdbaccess

を使ってるみたいですね。
内部的には HAS_DBACCESS 関数を使ってみたいです。
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-04-06 18:16
お騒がせしました。

プロファイラでSQLをモニタリングし、クエリアナライザの上部のデータベース一覧の
コンボをクリックすると sp_MShasdbaccess を実行していました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_sp_ma-mz_1six.asp

これが使えそうです。
1

スキルアップ/キャリアアップ(JOB@IT)