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?


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;


@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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.