Pazartesi , 20 Kasım 2017

Reporting Service Subscription’larinin isimlendirilmesi

Microsoft’un güçlü raporlama aracı olan Reporting Services  ile hazırlandığımız raporlar sadece kullanıcılarımız istediğinde değil otomatik olarak günün belli saatlerinde de kullanıcılara e-mail yoluyla gönderilebilmektedir. Böylece kullanıcının rapor almak için bilgisayar başında olmasına gerek kalmadan sadece mail yoluyla düzenli bir şekilde aynı rapor kendisine ulaştırılacaktır. İşte bu şekilde yapılara e-mail subscription denmektedir. Reporting Services kullanan hemen hemen her firma e-mail subscription özelliğini kullanarak belli kullanıcılara raporlarını en-mail yoluyla otomatik olarak göndermektedir. En temel haliyle Reporting Services aracında e-mail subscription özelliği aşağıdaki gibi çalışmaktadır.

ReportName1

Yukarıdaki resimde gördüğümüz gibi hazırladığımız raporlar bir SMTP Server üzerinden e-mail yoluyla gönderilmektedir. Ayrıca bu işin belli zaman aralıklarında yapılması için de SMTP Server yanında SQL Serverın zamanlanmış görevler için kullanılan SQL Server Agent servisi kullanılmaktadır. SQL Server Agent Servisinde her zamanlanmış görevin karşılığı Job olarak adlandırılan SQL Server nesneleri olduğu için biz zamanlanmış bir e-mail subscription oluşturduğumuzda arka planda bu işi belirtilen zamanda yapacak bir tane Job tanımlanır. Tanımlanan bu joblar SQL Server tarafından otomatik olarak isimlendirilir. İsimlendirme yapılırken aynı ismin tekrar kullanılmaması için GUID(Global unique identifier)  kullanılır. GUID kullanımı her ne kadar aynı isimle iki Job oluşturulmasını engellemiş olsa bile Job’ların tutulduğu SQL Serverda hangi raporun hangi Job tarafından temsil edildiğini anlamak zorlaşıyor.

ReportName2

Özellikle e-mail subscription sayısı artıkça Job’larında yönetilmesi zorlaşıyor. İşte bu esnada SQL Server Reporting Services aracının kullandığı veritabanındaki ReportSchedule, subscription ve Cartalog sistem tabloları imdadımıza yetişiyor. Aşağıdaki sorgu ile SQL Server Agent altında otomatik olarak tanımlanmış olan Job’ların hangi rapora ait olduğunu listeleyen sorguya erişebilirsiniz.

SELECT Schedule.ScheduleID AS SQLAgent_Job_Name
 ,Subscriptions.Description AS sub_desc
 ,Subscriptions.DeliveryExtension AS sub_delExt
 ,[Catalog].NAME AS ReportName
 ,[Catalog].Path AS ReportPath
FROM ReportSchedule
INNER JOIN Schedule ON ReportSchedule.ScheduleID = Schedule.ScheduleID
INNER JOIN Subscriptions ON ReportSchedule.SubscriptionID = Subscriptions.SubscriptionID
INNER JOIN [Catalog] ON ReportSchedule.ReportID = [Catalog].ItemID
 AND Subscriptions.Report_OID = [Catalog].ItemID</pre>
<pre>
 

Hakkında ismailadar

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


*

Ş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>