REPORT SERVER LOGLAMA – AUDIT

Report Serverın ayarları açık ise report servera her bir istek gönderildiği zaman report serverda bir kayıt oluşur.Yani reportserverda ne zaman view report tuşuna basılırsa veya kaydetme tuşlarından excel,pdf veya başka bir formata rapor alınmak istenirse report serverda kaydı tutulur

Eğer değiştirilmediyse report serverın default log tutma süresi 60 gündür ve bu özellik açık olarak gelir.Ancak report serverın propertiesinden bu süre arttırılabilir veya report serverın loglaması kapatılabilir

Daha sonra Report Server db sine giderek ExecutionLogStorage tablosuna bakalırsa işlem logları bu tabloda tutulmaktadır

Select  * from ExecutionLogStorage

ExecutionLogStorage tablosundaki bazı önemli alanlar şunlardır

UserName àEğer program domain mantığında çalışıyor ise burada domain user ismi

àEğer program domain değil anonymous mantığı ile çalışıyor ise dummy user olarak kayıt çıkacaktır

Format: RPL,Excel,PDF vs hangi formatta veri istenmişşe o gözükür.Zaten view report butonuna basıldığında direkt olarak format alanı RPL olacak şekilde sisteme bi kayıt düşer

Parameters:Rapora gönderilen parametreler aşağıdaki gibi & işareti ile ayrılarak tutulur

begin=12.06.2011&end=13.06.2011&BU=6163296b-f798-df11-8fa0-001a64c78ef4

ReportID:Hangi rapordan istek yapıldığının ID si tutar.Buradaki reportID catalog tablosunda itemID ile join edilerek Catalog tablosundan raporun report servera deploy edilmiş hali bulunur

Select ItemID,Name from Catalog

TimeStart:İsteğin başladığı tarihi gösterir

RowCount:Kaç kaydın o anda alındığını gösterir

Yalnız rowcount excel,pdf aktara basıldığında rowcount atmaz.Sadece bir tane log kaydı oluşur.RowCount view report basıldığında sorgu sonucu dönen kaydı tutar

Dolayısıyla her reportview ,ve excel,pdf aktarma işlemi için report serverda bi log oluşur

Eğer sisteminiz domain mantığı ile çalışıyorsa  ExecutionLogStoragedaki UserName kullanarak kendi user tablonuzdaki domain name ile eşleştirebilirsiniz

Yok eğer sisteminiz domain mantığında değilse ve hangi kullanıcının işlem yaptığını öğrenmek istiyorsanız bunun için Her raporunuza sabit olacak şekilde Sisteminizdeki report viewara UserId diye bir parametre göndermek ve daha sonra UserId parse ederek buradaki değer ile kendi user tablonuzdaki değeri eşleyerek işlem yapabilirsiniz

Uyarı:Eğer report serverınız ile programınızın kullandığı veritabanı ayrı sqllerde ise ve siz link server ile report servera sorgu atacak iseniz  aşağıdaki gibi hata alacaksınız.Çünkü ExecutionLogStorage içinde xml bir alan olduğu için size izin vermeyecektir

Bunu aşmak için linked serverdan sorgu çekeceğiniz yerde OPENQUERY komutunu kullanmanız gerekir.Aşağıdaki gibi örnek bir sorgu ile hem linked serverdan parametrik olarak veri çekip sonra bunu bir temp table yardımı ile kendi veritabanımız ile birleştirerek kullanabiliyoruz

DECLARE @sqlQuery VARCHAR(8000)

DECLARE @finalQuery VARCHAR(8000)

SET @sqlQuery = ‘Select  UserName AS UserID,Name AS RaporAd,ReportID,Format,[RowCount] AS RowAdet,TimeStart,TimeEnd from  [ReportServer].[dbo].[ExecutionLogStorage] inner join [ReportServer].[dbo].[Catalog] on [Catalog].ItemID=ExecutionLogStorage.ReportID WHERE TimeStart >= ‘ + ”” + ”” + convert(varchar,@TimeStart) + ”” + ””  + ‘and TimeStart<”’ + ””+convert(varchar,@TimeEnd) + ”” + ””

SET @finalQuery = ‘SELECT * FROM OPENQUERY([CRM4APP],’ + ”” + @sqlQuery + ”” + ‘)’

CREATE TABLE #List1

(

UserID varchar(500), RaporAd varchar(500) ,ReportID uniqueidentifier,Format varchar(100),RowAdet int,TimeStart datetime,TimeEnd DateTime

)

INSERT INTO #List1

(

UserID,RaporAd,ReportID,Format,RowAdet,TimeStart,TimeEnd)

exec(@finalQuery )

select  SystemUser.SystemUserId AS UserID,SystemUser.FullName AS KullanıcıAd,SystemUser.DomainName,RaporAd,ReportID,Format,RowAdet,convert(varchar,TimeStart,103) AS TimeStart,convert(varchar,TimeEnd,103) AS TimeEnd,BusinessUnit.Name AS BayiAd  from #List1

inner join SystemUser on SystemUser.DomainName=#List1.UserID COLLATE Turkish_CI_AI

inner join BusinessUnit on SystemUser.BusinessUnitId=BusinessUnit.BusinessUnitId

drop Table #List1

Bu yazı SQL SERVER kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>