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?


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;


@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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.