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?
sql-server
carlo.borreo
quelle
quelle
sys.dm_exec_requests
,sys.dm_exec_sessions
usw.sysprocesses
ist eine Abwärtskompatibilitätsansicht und wird irgendwann aus dem Produkt entfernt.Antworten:
Systemansichten erfordern einen leicht erhöhten Status, da sie instanzweit sind.
GRANT VIEW SERVER STATE
Dazu möchten Sie :quelle
GRANT VIEW DATABASE STATE
.sys
können in der Tat mit nur ausgewählten Berechtigungen einer einzelnen Datenbank ausgewählt werden, zsys.indexes
.