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?
sql-server
carlo.borreo
sumber
sumber
sys.dm_exec_requests
,,sys.dm_exec_sessions
dll.sysprocesses
Adalah tampilan kompatibilitas mundur dan akan dihapus dari produk di beberapa titik.Jawaban:
Tampilan sistem memerlukan kondisi yang sedikit lebih tinggi untuk dilihat, karena luasnya instance. Anda akan menginginkannya
GRANT VIEW SERVER STATE
untuk ini:sumber
GRANT VIEW DATABASE STATE
.sys
memang dapat dipilih dari hanya dengan izin pilih dari satu database, sepertisys.indexes
.