content top
פוסטים אחרונים

הרצת SSRS Subscription עם SQL – חלק ב' – שימוש ב-ETL

במאמר הקודם הייתי צריך להריץ Subscription בודד מדוח אחד. כאשר יש מספר Subscriptions ומספר דוחות, הפתרון שהצגתי במאמר הקודם לא מספיק לנו.

במאמר הזה אני אציג כיצד להריץ את כל ה-Subscriptions של דוח אחד או יותר, פתרון שניתן להתאים לצרכים נוספים. הפעם אשתמש בתהליך ETL של SSIS, ספציפית ב-Foreach Loop בכדי להגיע לתוצאה הרצויה. לריענון ב-Foreach Loop ניתן להקליק בקישורים הבאים:

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

https://www.simple-talk.com/sql/ssis/implementing-foreach-looping-logic-in-ssis-/

 

דבר ראשון נצטרך ליצור Solution חדש ב-Integration Services וליצור Configuration Manager אל ה-DataBase של "ReportServer" .

בתוך הפתרון, נתחיל עם יצירה של משתנה (Variable) שאותו נצטרך בשביל לולאה (Foreach Loop) שאותה ניצור עוד מעט. סוג המשתנה חייב להיות Object, כי אנחנו ניתן לו טבלה מלא (Full table result set).

נמשיך עם יצירה של משתנה שני מסוג String. המשתנה הזה ייכנס לשימוש בתוך הלולאה.

1

 

עכשיו אנו ניצור "Execute SQL Task", נלחץ לחיצה כפולה עליו, נחבר אותו ל-DataBase של "ReportServer". גם נשנה את ה-Result Set ל-"Full Result Set"  (על מנת שהוא יעביר את כל הטבלה). הסקריפט הבא יחזיר את כל ה-Subscriptions הרלוונטיים לדוחות המוחזרים. נכניס אותו כעת:

SELECT SubscriptionID

FROM [ReportServer].[dbo].[ReportSchedule]

JOIN [ReportServer].[dbo].[Catalog]

ON ReportID = ItemID

WHERE CHARINDEX('AdventureWorks', Name) >0

 

שנו את ה-Where כדי להתאים לצרכים שלכם. זכרו שהוא צריך להחזיר את המפתח של הדוחות הרצויים. בדוגמא שלי החזרתי את כל ה-Subscriptions של הדוחות שבשמם יש AdventureWorks.

2

בשלב זה אנו נעשה שימוש במשתנה הראשון שייצרנו, ה-LoopVariable, בתוך ה-Result Set כך:

3

Result Name חייב להיות "0", שאומר שה-Data Set הראשון שהשאילתה מחזירה תגיע למשתנה. מכיוון שהשתמשנו ב-Full Result Set נקבל פלט של תוצאה אחת בצורת טבלה.

 

בשלב הבא אנו ניצור לולאת Foreach Loop ונלחץ עליה פעמיים. נלך ל-Collection tab, נשנה את Enumerator ל-"Foreach ADO Enumerator", נבחר את המשתנה הראשון שיצרנו (מסוג Object) ונשנה את ה-Mode ל-"Rows in the first table".

4

נלך ל-"Variable mapping" ונוסיף את המשתנה השני שיצרנו (מסוג String), האינדקס יהיה "0".

5

כעת אנו נייצר עוד SQL Task ונכניס אותו לתוך ה-Foreach Loop ונלחץ עליו פעמיים. נוודא שה-Result Set הוא "None", נחבר אותו ל-DataBase של "ReportServer" ונוסיף את הסקריפט שייצרנו בחלק א' של הפוסט (http://www.sqlserver.co.il/?p=6312):

Exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData= ?

הסקריפט יריץ את כל ה-Subscriptions שקיבלנו בפלט של ה-SQL Task הראשון.

6

כעת נלך ל-"Parameter mapping" ונוסיף את המשתנה השני, נשנה את סוג המשתנה ל-Varchar ואת שם המשתנה ל-"0".

7

כעת יש לנו פתרון שמביא את כל ה-Subscriptions בשביל כל הדוחות שנבחר.

 

בהצלחה

איתי שולץ

Data platform meetup – meeting #9 – Non-Deterministic Elements and SQLCMD

Data platform meetup – meeting #9 – Non-Deterministic Elements and SQLCMD

המפגש החודשי של ינואר ייערך בתאריך 2.1 במשרדי מיקרוסופט ברעננה.

שעות המפגש- 17:30 התכנסות ו 18:00 תחילת ההרצאה הראשונה.

במפגש הפעם נדבר על אחד נושאים מרתקים שלא מרבים לדבר עליהם – דטרמיניזם ב T-SQL ו SQLCMD.

נשמח מאוד אם תירשמו כאן כדי שנוכל להיערך בהתאם לכמות האנשים (ובעיקר על מנת שתוכלו להשתמש בחניה בבניין).

קרא עוד…

Machine learning ו R שלב אחר שלב ב SQL 2016 הלכה למעשה ל DBA ולמפתח, חלק ג

Machine learning ו R שלב אחר שלב ב SQL 2016 הלכה למעשה ל DBA ולמפתח, חלק ג

קוראים יקרים אנו נמשיך במסע שלנו עם SQL 2016 R services . המאמרים הקודמים נכתבו עבור גרסת הבטא של SQL וכלן עדכנתי את נושא ההתקנות וכלי הפיתוח . למאמר מצורף script R בשם SQL 2016 Decision tree with R Demo.r . קרא עוד…

הוספת שורות לשתי טבלאות בו זמנית

הוספת שורות לשתי טבלאות בו זמנית

פעם כתבתי פוסט על הנושא, בעיקר בתור אתגר; בשם חסכו ואמצו (2).
באופן כללי, ניתן לשלוף את השורות שהשתנו (במקרה זה – התווספו) על ידי האופרטור Output,
ואם קצת מתחכמים – להפנות את הפלט של ה-Output לטבלה שניה.
בערך כך:

קרא עוד…

Data platform meetup – meeting #8 – DB Devops and the truth about table variables

Data platform meetup – meeting #8 – DB Devops and the truth about table variables

המפגש החודשי של דצמבר ייערך בתאריך 5.12 במשרדי מיקרוסופט ברעננה.

שעות המפגש- 17:30 התכנסות ו 18:00 תחילת ההרצאה הראשונה.

במפגש הפעם נדבר על אחד הנושאים המעניינים והשנויים ביותר במחלוקת – DB Devops.

גם ההרצאה השניה תדבר על נושא מסתורי ושנוי במחלוקת – משתנה טבלה (table variables)

נשמח מאוד אם תירשמו כאן כדי שנוכל להיערך בהתאם לכמות האנשים (ובעיקר על מנת שתוכלו להשתמש בחניה בבניין).

 

קרא עוד…

תגובות אחרונות באתר
  • לירן ויימן: Thank you for your kind words and your feedback. :-) I'm gl...
  • limpiezas Anton mataro: Con el deseo que hayan tenido una breve presentación de nues...
  • Henrik Nordtorp: Hi Liran. Very cool script. I've only waited some 18 year...
  • Shy Engelberg: still in Ra'anana, Hapnina st. Microsoft offices....
  • Amy: Ahaa, its good discussion on the topic of this article at ...