content top
הרצת SSRS Subscriptions עם SQL – חלק א'

הרצת SSRS Subscriptions עם SQL – חלק א'

 

לאחד מלקוחותיי הייתה בקשה מעניינת, התבקשתי שכל פעם שה-ETL JOB מסיים לרוץ בהצלחה, מיד לאחר מכן יופעל ה-Subscription של דו"ח ה-SSRS.

במאמר זה אני יוצא מנקודת הנחה שיש ידע בסיסי ב-SSRS ו-Subscriptions. במידת הצורך ניתן להתרענן כאן:

https://msdn.microsoft.com/en-us/library/ms159762.aspx

https://technet.microsoft.com/en-us/library/cc872783.aspx

 

ב-Subscriptions של SSRS משתמשים ליצירה מראש של לוח זמנים להפצה של דוחות לרשימת משתמשים המוגדרים מראש בעזרת פרמטר (בשונה מ-Data Driven Subscriptions). החיסרון בכך הוא חוסר גמישות, לא ניתן לשנות את לוח הזמנים בקלות לפי דרישה או לשלוח את הדוח מתוך SQL ו-ETL. אבל יש לכך פתרון.

במאמר זה אני אעבור על הפתרון של הפעלת Subscription בעזרת פקודה וללא צורך לשנות את לוח הזמנים.

 

קודם כל אנחנו צריכים להבין שכאשר אנו יוצרים Subscription ב-SSRS, אוטומטית נוצר JOB ב-SQL Server Agent, עם מפתח ייחודי. זהו אינו שם, כינוי או שום דבר אחר שניתן לזהות בקלות בשום שפה אנושית. לדוגמא:

1

אל תתנו לזה להפחיד אתכם מפני שיש פתרון והוא אפילו קל. קודם כל יש לייצר Subscription. במידה ויש המשיכו הלאה.

עכשיו אנו צריכים למצוא את ה-JOB של ה-Subscription. במידה ויש לנו יותר מ-Subscription אחד, יהיו לנו מספר JOBs ולכן נעשה את הדברים הבאים כדי למצוא את ה-JOB הנכון.

כאשר אנו עורכים את ה-Subscription, נוכל למצוא את ה-SubscriptionID בשורת הכתובת של הדפדפן, בתוך כתובת ה-HTML.

2

המפתח הייחודי הוא: "SubscriptionID= 020049D3-5E90-4C6C-BAB2-32C99870EDB5". המפתח כמובן יהיה שונה מזה המופיע בדוגמא הנ"ל, אך זהו החלק שנצטרך. העתיקו אותו למקום בטוח.

 

על מנת למצוא את ה-JOB הנכון, נריץ את הקוד הבא, רק החליפו את ה-SubscriptionID שלי בשלכם. שימו לב שאתם בשרת הנכון וב-Database הנכון (שם ברירת המחדל של ה-DB של SSRS הוא "ReportServer").

 

SELECT [ScheduleID]

FROM [dbo].[ReportSchedule]

WHERE (SubscriptionID = '020049D3-5E90-4C6C-BAB2-32C99870EDB5')

3

ה-SchdeuleID ייתן לכן את המפתח הייחודי של ה-JOB. עכשיו נלך ל-SQL Server Agent, אל ה-Jobs, ונלחץ על הרצוי לחיצה כפולה. משם נעבור ל-Steps, נלחץ Edit ונעתיק את שורת הקוד שמפעילה את ה-JOB.

4

Exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='020049d3-5e90-4c6c-bab2-32c99870edb5'

 

כעת רק נשאר לנו להריץ את הפקודה היכן שאנו רוצים, ב-ETL בתוך "Execute SQL Task" או ב-SQL Management studio וסיימנו.

בהצלחה

איתי שולץ


3 תגובות על “הרצת SSRS Subscriptions עם SQL – חלק א'”

  1. מאת עמית:

    איתי השפיץ ! אחלה פוסט.

  2. מאת ג'ונסון:

    מאוד אינפורמטיבי ומעניין

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

one × five =