Berikan izin untuk memilih dari tabel sistem

14

Saya memiliki database Microsoft SQL Server 2008 r2. Pengguna bernama marie didefinisikan, yang dapat mengakses tabel pada basis data utama; ini bekerja dengan baik. Sekarang, saya ingin marie dapat melakukan permintaan ini:

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

Tabel yang terlibat adalah tabel master; bagaimana cara memberi izin kepada marie untuk membaca dari mereka? Saya sudah mencoba menjalankan yang berikut ini sebagai dbo:

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

Namun, ketika marie mencoba melakukan kueri di atas, kesalahannya adalah:

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

Apa yang saya lakukan salah?

carlo.borreo
sumber
Anda juga harus menggunakan sys.dm_exec_requests,, sys.dm_exec_sessionsdll. sysprocessesAdalah tampilan kompatibilitas mundur dan akan dihapus dari produk di beberapa titik.
Aaron Bertrand

Jawaban:

25

Tampilan sistem memerlukan kondisi yang sedikit lebih tinggi untuk dilihat, karena luasnya instance. Anda akan menginginkannya GRANT VIEW SERVER STATEuntuk ini:

GRANT VIEW SERVER STATE TO marie;
Mike Fal
sumber
Berikut ini tautan ke manual: msdn.microsoft.com/en-us/library/ms188754%28v=sql.105%29.aspx
a_horse_with_no_name
@a_horse_with_no_name Terima kasih, sedang mencari itu. :) Tautan ditambahkan ke jawaban.
Mike Fal
Ini tidak didukung di Azure SQL db - bagaimana cara mencapai yang setara di sini?
tommed
1
Coba GRANT VIEW DATABASE STATE.
Mike Fal
Beberapa tabel di bawah sysmemang dapat dipilih dari hanya dengan izin pilih dari satu database, seperti sys.indexes.
John