Bu yüzden, çalışanlar için bir grup istatistikleri izleyen dahili kullanım için bir web sitem var. Bunlardan biri, herhangi bir raporun eksik olup olmadığı. Raporları olmayan öğelerin listesi her iki günde bir güncellendiğinden ve bu raporlarda 3 günlük bir süre geçmediğinden, Tarih (releaseDt) öğesinin öğeyi bir raporun eksik olarak kaydedildiği ile karşılaştırıyorum veritabanının son güncellendiği zaman (@lastupdate). Bu şekilde, raporlar veritabanı güncellenmediyse ancak rapor tamamlanmışsa, web sitesi bir raporu kaçırmak için birilerini dışarı atmaz.sys.dm_db_index_usage_stats iznine erişim izni
SQL kodu, yönetici düzeyi özel durumlarıyla iyi çalışır, ancak açık nedenlerle ASP.NET hesabının sunucu yönetici düzeyine sahip olmasına izin vermem.
ASP.NET C# kodunun oturum açmak için kullandığı bir SQL hesabı oluşturdum ve her şeyin izinleri iyi. (Sadece kullandığı belirli veritabanları için okuma erişimini okuyun.) Bu özel dinamik yönetim görünümünü okumak için erişime sahip olabilmek için erişime ne verileceğini anlayamıyorum.
Ya Management Studio'yu kullanarak veya GRANT
SQL deyimini kullanarak önerilerinize minnettar olurum. Bu sunucusu kapsamlı DMV'leri için politika tarafından engellenir,
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
Sadece pedantik açıklık için, bu bir 'sistem tablosu' değil,' dinamik yönetim görünümü'dür. –
Düzeltildi. – sylverfyre
Elbette, kodun ya da arka planın da geçerli olduğunu sanmıyorum - soru bir anlam kaybetmeden bir ya da iki astarlı olabilir. –