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.