Erteilen Sie die Berechtigung zur Auswahl aus Systemtabellen

14

Ich habe eine Datenbank Microsoft SQL Server 2008 r2. Es wird ein Benutzer namens Marie definiert, der auf Tabellen in der Hauptdatenbank zugreifen kann. das funktioniert gut. Jetzt möchte ich, dass Marie diese Abfrage ausführen kann:

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

Die beteiligten Tabellen sind Mastertabellen. Wie gebe ich Marie die Erlaubnis, von ihnen zu lesen? Ich habe bereits versucht, folgendes als dbo auszuführen:

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

Dennoch, wenn Marie versucht, die obige Abfrage durchzuführen, ist der Fehler:

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

Was mache ich falsch?

carlo.borreo
quelle
Außerdem sollten Sie verwenden sys.dm_exec_requests, sys.dm_exec_sessionsusw. sysprocessesist eine Abwärtskompatibilitätsansicht und wird irgendwann aus dem Produkt entfernt.
Aaron Bertrand

Antworten:

25

Systemansichten erfordern einen leicht erhöhten Status, da sie instanzweit sind. GRANT VIEW SERVER STATEDazu möchten Sie :

GRANT VIEW SERVER STATE TO marie;
Mike Fal
quelle
Hier ist der Link zum Handbuch: msdn.microsoft.com/en-us/library/ms188754%28v=sql.105%29.aspx
a_horse_with_no_name
@a_horse_with_no_name Danke, habe danach gesucht. :) Link zur Antwort hinzugefügt.
Mike Fal
Dies wird in Azure SQL-Datenbanken nicht unterstützt. Wie erreiche ich hier das Äquivalent?
30.
1
Versuchen Sie es GRANT VIEW DATABASE STATE.
Mike Fal
Etwas Tabellen unter syskönnen in der Tat mit nur ausgewählten Berechtigungen einer einzelnen Datenbank ausgewählt werden, z sys.indexes.
John