Sistem tablolarından seçim yapma izni ver


14

Microsoft SQL Server 2008 r2 bir veritabanım var. Ana veritabanındaki tablolara erişebilen marie adlı bir kullanıcı tanımlanır; bu iyi çalışıyor. Şimdi, marie bu sorguyu gerçekleştirmek için istiyorum:

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

İlgili tablolar ana tablolardır; marie'den onlardan okuması için nasıl izin verebilirim? Zaten dbo olarak aşağıdaki yürütmek için çalıştı:

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

Yine de, marie yukarıdaki sorguyu gerçekleştirmeye çalıştığında hata:

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

Neyi yanlış yapıyorum?


Ayrıca kullanıyor olmalıdır sys.dm_exec_requests, sys.dm_exec_sessionsvb sysprocessesbir geriye dönük uyumluluk görünüşüdür ve bir noktada üründen çıkarılır.
Aaron Bertrand

Yanıtlar:


25

Sistem görünümleri, örnek genişliğinde oldukları için görüntülemek için biraz yükseltilmiş bir durum gerektirir. Bunun GRANT VIEW SERVER STATEiçin:

GRANT VIEW SERVER STATE TO marie;


@a_horse_with_no_name Teşekkürler, bunu arıyordum. :) Cevap için bağlantı eklendi.
Mike Fal

Bu Azure SQL db'de desteklenmiyor - burada eşdeğeri nasıl elde edebilirim?
tommed

1
Deneyin GRANT VIEW DATABASE STATE.
Mike Fal

Altındaki bazı tablolar sys, yalnızca tek bir veritabanının yalnızca belirli izinleriyle seçilebilir sys.indexes.
John
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.