システムテーブルから選択する許可を与える


14

データベースMicrosoft SQL Server 2008 r2があります。メインデータベースのテーブルにアクセスできるmarieというユーザーが定義されています。これはうまく機能します。ここで、marieがこのクエリを実行できるようにしたいと思います。

SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame
  FROM sys.dm_tran_locks dl
  JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid

関連するテーブルはマスターテーブルです。マリーに彼らから読む許可を与えるにはどうすればいいですか?私はすでにdboとして以下を実行しようとしました:

GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO marie

それでも、marieが上記のクエリを実行しようとすると、エラーは次のようになります。

Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.

私は何を間違えていますか?


また、あなたは使用する必要があるsys.dm_exec_requestssys.dm_exec_sessionsなど、sysprocesses下位互換性の図であり、いくつかの時点で、製品から削除されます。
アーロンバートランド

回答:


25

システムビューは、インスタンス全体であるため、表示するには少し高い状態が必要です。あなたはこれをしたいでしょうGRANT VIEW SERVER STATE

GRANT VIEW SERVER STATE TO marie;

:ここでは、マニュアルへのリンクですmsdn.microsoft.com/en-us/library/ms188754%28v=sql.105%29.aspx
a_horse_with_no_name

@a_horse_with_no_nameありがとう、探していた。:)回答にリンクが追加されました。
マイクファル

これはAzure SQL dbではサポートされていません-ここで同等の機能を実現するにはどうすればよいですか?
16

1
試してくださいGRANT VIEW DATABASE STATE
マイクファル

いくつかのテーブルはsys、などの単一のデータベースの選択権限のみで実際に選択できますsys.indexes
ジョン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.