Uprawnienia dostępu do sys.dm_db_index_usage_stats
Mam więc stronę internetową do użytku wewnętrznego, która śledzi kilka statystyk dla pracowników. Jednym z nich jest to, czy brakuje im jakichkolwiek raportów. Ponieważ lista elementów, które nie mają jeszcze raportów, jest aktualizowana co kilka dni, a raporty te mają 3-dniowy okres karencji, porównuję datę (releaseDt), że element został zarejestrowany jako brakujący raportu do ostatnia aktualizacja bazy danych (@lastupdate). W ten sposób, jeśli baza danych raportów nie została zaktualizowana, ale raport jest kompletny, witryna nie zapisuje nikogo za brak raportu.
Kod SQL działa poprawnie z uprawnieniami administratora, ale z oczywistych powodów nie pozwalam, aby konto ASP.NET miało poziom administratora serwera.
Skonfigurowałem konto SQL, którego kod programu ASP.NET C # używa do logowania, a uprawnienia do wszystkiego innego są poprawne. (Dostęp do odczytu tylko dla określonych baz danych, z których korzysta.) Nie mogę dowiedzieć się, co daje mu dostęp, aby mieć dostęp do odczytu tego konkretnego dynamicznego widoku zarządzania.
Będzie wdzięczny za sugestie za pomocą Management Studio lub za pomocąGRANT
Instrukcja SQL.
Wygląda na to, że mają powiązane informacje na temat danego widoku:
sys.dm_db_index_usage_stats (Transact-SQL)
DECLARE @lastupdate datetime
SELECT @lastupdate = last_user_update from sys.dm_db_index_usage_stats
WHERE OBJECT_ID = OBJECT_ID('MissingReport')
SELECT
COALESCE(Creator, 'Total') AS 'Creator',
COUNT(*) AS Number,
' + CONVERT(varchar(32), SUM(Cost), 1) AS 'Cost'
FROM MissingReport
WHERE NOT(
[bunch of conditions that make something exempt from needing a report]
OR
(
DATEDIFF(day,ReleaseDt,@lastupdate) <= 3
)
)
GROUP BY Creator WITH ROLLUP