top of page
Search

SSIS - שיעור 6 - נושאים ותרגול‎‎‎

  • class928417
  • Oct 8, 2014
  • 5 min read

*** מייל מרן ****

היי,

אני אנסה במייל זה לעשות סדר בכל נושא הDebugging, Error Handling and Logging In SSIS.

קראו אותו בעיון.

להלן הנושאים שעברנו עליהם במהלך שיעור 6:

1. Data Flow - Data Conversion Transformation

טרנספורמצייה זו בעצם עושה CAST לשדה מסויים שמגיע בקלט (Input) עם DataType מסויים - וממירה אותו, אם ניתן, ל DataType אחר.

2. Cast (SSIS Expression)

בתוך טרנספורמציית data Conversion משתמשים בסוגים שונים של CASTים.

http://msdn.microsoft.com/en-us/library/ms140266.aspx

3. Flat File Connection Manager

ראינו כיצד מגדירים Connection Manager ל Flat File מסוג Fixed Width - בו כל רשומה תופסת גודל אחיד של תוים, וכל שדה תופס מספר זהה של תוים לכל אורך הרשומות.

http://msdn.microsoft.com/en-us/library/ms140266.aspx

4. Control Flow - For Loop Container

Debugging, Error Handling and Logging In SSIS:

A. Debugging -

הגדרה: Debug הוא תהליך מציאה ותיקון של Bugs (תקלות) בתכנית. כך נוכל להבין כיצד התכנית רצה ולברר האם היא פועלת כלי שתכננו.

A.1 Debugging Control Flow

1. Debug a Package by Setting Breakpoints on a Task or a Container

2. Progress reporting

2.1. צפייה בסימנים והצבעים שעל הרכיבים השונים - כדי לקבל חיווי על הצלחה או כישלון

2.2 SSIS Progress Tab

2.3 SSIS Output Window (View-->Output)

3. Debug using Watch Window

A.2 Debugging Data Flow

1. Data Viewrs - כדי לצפות בנתונים (דאטה) שעוברים ב Data Flow

2. Progress reporting

2.1 צפייה בסימונים השונים (הויזואלים) על גבי ה Data Flow

Rows transfered- במהלך הריצה ניתן לראות על גבי המסך כמה שורות עוברות מרכיב אחד לשני

- סימונים על הרכיבים השונים - חיווי להצלחה או כישלון

2.2 SSIS Progress Tab

3. למרות שאציין את הנושא בסעיף הטיפול בשגיאות (Error Handling) - הוצאת רשומות שלא הצליחו לעבור תהליך מסויים לפלט שונה מהרשומות שכן הצליחו (Redirect Rows) - גם זו דרך לבצע Debug על התהליך שלנו ב Data Flow

B. Error Handling (טיפול בחריגות)

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

B.1 Control Flow Error Handling

1. Control Flow - Precedence Constraints

נושא שכבר עברנו עליו - כל האפשרויות כדי להחליט האם TASK מסוים ב CONTROL FLOW יפעל או לא.

1. שימוש באופציות Success, Failure, Competion

2. שימוש ב Evaluation Operation (קליק ימני על החץ, Edit, תחת Constaint Options).

3. שילוב של 1 ו 2 בקשר של AND או OR

2. Event Handler

http://technet.microsoft.com/en-us/library/ms140223.aspx

טאב שנמצא בממשק ה SSIS - ומופעל (כמו טריגר) לאחר פעולה מסויימת שחלה על אחד TASKים ב Control Flow . אנחנו נגדיר על איזה TASK נפעיל EVENT HANDLER ואיזה EVENT יפעיל אותו. בתוך ה EVENT HANDLER נוכל להגדיר TASKים בדיוק כמו ב Control Flow.

3. MaximumErrorCount

זהו מאפיין (Property) שקיים על רוב הרכיבים השונים ב Control Flow. שם נגדיר את כמות השגיאות (Errors) שנאפשר ברכיב מסויים, כדי שיחשב ככישלון.

גם ברמת ה Control Flow ניתן להגדיר MaximumErrorCount כך שכל ה Package יחשב ככישלון.

כשאני כותב "יחשב ככישלון" - צריך לזכור שהמושג "כישלון" הוא יחסי. תכנית מסויימת יכולה להיות מוגדרת ככישלון אם קרתה בה שגיאה אחת, ואחרת תוגדר ככישלון אם קרו בה 100 שגיאות. הכל בידי התכניתן והארגון. לכן יש לנו את המאפיין הזה.

ראינו בכיתה דוגמא בה For Each Loop Container הצליח וסיים לרוץ על כל הקבצים למרות שהיו בו כמה כשלונות, בגלל שהפרמטר MaximumErrorCount היה מוגדר עם ערך גדול ממספר השגיאות שאכן היו בו, ולעומת זאת, ה Package כולו שהכיל את הלולאה, הסתיים בכישלון כיוון שאצלו MaximumErrorCount היה מוגדר עם ערך הקטן ממספר השגיאות.

את ההודעה המפורשת האם ה PACKAGE הצליח או נכשל ניתן לראות ב Proccess Bar - בו כתוב כמה שגיאות היו לעומת כמה מה מוגדר ב MaximumErrorCount

של ה Package כולו.

B.2 Data Flow Error Handling

השתמשנו בטרנספורמציית data conversion כדי להראות טיפול בשגיאה ברמת רשומה, ב Data Flow. טיפול כזה ניתן יהיה לראות ברכיבים רבים נוספים ב Data Flow.

2. Data Flow - Error Handling in Data

C. Logging (תיעוד)

הגדרה: תיעוד של תהליך ריצת התכנית ושמירת האירועים השונים במקום אותו נוכל לקרוא לאחר מכן כדי לבחון מה קרה בזמן הריצה

1. Enable Package Logging in SQL Server Data Tools

יש גם סרטונים שונים ב יוטיוב -

מה שנעשה כאן זה הגדרת דרכים שונות לתיעוד של כל מני אירועים והודעות שנוצרו בזמן ריצת ה Package- ושמירתם במקום שבו נוכל לקרוא לאחר מכן (למשל בבוקר שלאחר ריצת Package). יש אפשרויות שונות, לכולן נגיע דרך טאב SSIS--> Logging:

תחת Providers and Logs יש לבחור תחת add a new log את השיטה הרצויה וללחוץ Add. אלו השיטות לתיעוד:

- For Text files --> Choose File Path at "Configuration"

- For SQL Server (Database) --> Choose a connection to a Database at "Configuration"

--> on the Database, under "System Tables" the log is on table "sysssislog"

- Windows Event Log: --> no "Configuration"... Just look at:

Start --> Right click on "Computer" --> Manage --> the log is on Event Viewer-->Windows Log-->Application

- Sql Server Profiler - כלי ניטור של מייקרוסופט. ניצור קובץ שיקרא בהמשך ע"י כלי זה

- XML Files

תחת Details יש לבחור באירועים השונים אותם יש לבחור.

בצד שמאל, ניתן לברור אילו מהרכיבים ב Package לתעד. בדרך כלל נבחר את כולם.

לאחר הרצת ה Package תוכלו לבחון את האירועים שנוצרו דרך כל אחת מהשיטות שבחרתם.

2. User Log Tables

כמו שעשינו במהלך כמה מהתרגילים שלנו, ניתן לשמור נתונים על הנתונים שלנו בטבלאות שאנחנו מייעדים אותם להיות תיעוד של טעינות הנתונים שלנו. אלו טבלאות לוג שלנו ולא שנוצר ע"י הSSIS כמו בסעיף

2.1 ביצענו רישום של מספר השורות שנטענו למשתנה, דרך רכיב "Row Count" ולאחר מכן, ב Control Flow ביצענו הכנסה של הנתון לטבלה ייעודית שיצרנו במיוחד. בנוסף למספר השורות שמרנו גם את שם הטבלה אליה בוצעה הטעינה, את היום והשעה.

כמו כן כדאי לעיתים לשמור את שם ה Package שביצע את הטעינה, כיוון שלפעמים טבלאות מסויימות נטענות ע"י Packageים שונים.

2.2 ביצענו טעינה לטבלה דרך רכיב Aggregate ב Data Flow. כל תיעדנו את סטטיסטיקות שונות על הנתונים שנטענו.

תרגול:

1. תרגלו את הנושאים בבית בצורה בסיסית- כמו שעשינו בשיעור. קחו נתונים מהטבלאות והשתמשו ברכיבים השונים.

2. יש ליצור לPakcage מהתרגיל (טעינת DimAddress) שלכם מהשיעור הקודם:

"LoadSTGDimAddress" - טבלת תיעוד Logging (טבלת sysssislog) בבסיס נתונים StagingDB.

3.א. צרו טבלה עם נתונים שונים, והשתמשו ב CAST הבאים כדי להמיר את הנתונים:

  • DT_NUMERIC

  • DT_STR

  • DT_WSTR

  • DT_I4

  • DT_I2

  • DT_UI4

  • DT_UI2

3.ב. מה ההבדל בין ההמרות 2 ו 3?

מה ההבדל בין ההמרות 4 ו 5?

מה ההבדל בין ההמרות 5 ו 7?

4. מחוברת התרגול בנושא "Microsoft Integration Services":

תרגיל 11 - יש שם שימוש במשתנים גלובלים (משתנים המספקים מידע על הPackage ועל הריצה) של המערכת. ניתן להיעזר בתשובות כדי להבין באילו משתנים מדובר.

5. לעבור על כל השיעורים עד כה ולסיים (מי שלא הספיק) את תרגיל הכיתה. בואו ננצל את חול המועד כדי לתרגל ולהשלים חומר!

בהצלחה, רן.


 
 
 

Recent Posts

See All
Project MDX

נוספו MDX עבור הפרויקט למי שמתקשה. נמצא בלשונית "project" שאול

 
 
 
דוגמאות משלבי הפרויקט

הי, הוספתי בחלק של הפרויקט באתר מספר דוגמאות לתהליכים שונים משלב ה MRR וה - STG. אעדכן תוך כדי התקדמות הפרויקט. במידה ויש משהו שאתם...

 
 
 
קבוצת פייסבוק חדשה לקורס

המרצה במודול החדש ( מודול הפרויקט) פתח קבוצת פייסבוק לכיתה שלנו. הנה הלינק : https://www.facebook.com/groups/JBH9284.17/ שם הקבוצה :...

 
 
 

Comments


bottom of page