דף הבית  >> 
 >> 

הרשם  |  התחבר


משימת הסקריט ב- SSIS- מתי כדאי להשתמש ומתי לא ? 

מאת    [ 30/04/2014 ]

מילים במאמר: 1173   [ נצפה 3253 פעמים ]

משימת (Task) הסקריפט היא כמו הג'וקר במשחק קלפים – קלף שיכול להיות כל מה שרוצים.

בסקריפט אפשר ע"י קוד לעשות כל דבר, במיוחד אם אין אף משימה שמתאימה למה שנחוץ.

כמה שזה נשמע מלהיב – כדאי להשתמש במשימת הסקריפט בזהירות.

 

יש מתכנתים שמתפתים להשתמש הרבה במשימת הסקריפט, מתוך הרגל של כתיבת קוד.

כל מתכנת יודע, לצורך קבלת נתונים מהדטה בייס, ליצור connection, לכתוב מחרוזת של שאילתא משולבת במשתנים, ליצור recordset, להפעיל את השאילתא ולקבל את התוצאות במשתנה ה-recordset.

לפעמים זה נראה פשוט יותר מאשר ללמוד איך לעשות את זה במשימת 'data flow' או במשימת 'execute sql'. אבל לא כדאי ליפול לתוך המלכודת המתוקה הזו.

ראשית – כדאי לבדוק היטב אם אכן אף משימה לא מתאימה. המשימות נבנו בצורה כזו שהן עושות את הפעולה המבוקשת בצורה האופטימלית ביותר (יעילות ביצוע ומהירות), כך שאם אפשר לעשות את הפעולה הנצרכת בעזרת משימה מובנית של ה- SQL Server Integration Services - לא כדאי לעשות זאת ע"י הסקריפט.

 

אם כך, לצורך אלו דברים כדאי להשתמש במשימת הסקריפט ?

 


    • הדבר הפשוט ביותר הוא הצגת הודעות במהלך הריצה.

שימו לב - אם יוצרים ג'וב שיריץ את ה-package לא מהמחשב האישי ובצורה מתוזמנת (למשל בשעות הלילה כשאין עומס על שרת מרכזי ) - יש להוריד את ההודעות ( או לסגור כהערה), כי לא יהיה באותו הזמן מי שיראה את ההודעות וילחץ על אישור כדי שהג'וב ימשיך את פעולתו.

 


    • אפשר להכין תוכן מכתב אימייל מנתונים שהתקבלו מביצוע שאילתות SQL. תוכלו לשרשר את הערכים ומילות הקישור, ע"י פונקציות לטיפול במחרוזות.

 

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

 

  

משימת (Task) הסקריפט היא כמו הג'וקר במשחק קלפים – קלף שיכול להיות כל מה שרוצים.

בסקריפט אפשר ע"י קוד לעשות כל דבר, במיוחד אם אין אף משימה שמתאימה למה שנחוץ.

כמה שזה נשמע מלהיב – כדאי להשתמש במשימת הסקריפט בזהירות.

 

יש מתכנתים שמתפתים להשתמש הרבה במשימת הסקריפט, מתוך הרגל של כתיבת קוד.

כל מתכנת יודע, לצורך קבלת נתונים מהדטה בייס, ליצור connection, לכתוב מחרוזת של שאילתא משולבת במשתנים, ליצור recordset, להפעיל את השאילתא ולקבל את התוצאות במשתנה ה-recordset.

לפעמים זה נראה פשוט יותר מאשר ללמוד איך לעשות את זה במשימת 'data flow' או במשימת 'execute sql'. אבל לא כדאי ליפול לתוך המלכודת המתוקה הזו.

ראשית – כדאי לבדוק היטב אם אכן אף משימה לא מתאימה. המשימות נבנו בצורה כזו שהן עושות את הפעולה המבוקשת בצורה האופטימלית ביותר (יעילות ביצוע ומהירות), כך שאם אפשר לעשות את הפעולה הנצרכת בעזרת משימה מובנית של ה- SQL Server Integration Services - לא כדאי לעשות זאת ע"י הסקריפט.

 

אם כך, לצורך אלו דברים כדאי להשתמש במשימת הסקריפט ?

 


    • הדבר הפשוט ביותר הוא הצגת הודעות במהלך הריצה.

שימו לב - אם יוצרים ג'וב שיריץ את ה-package לא מהמחשב האישי ובצורה מתוזמנת (למשל בשעות הלילה כשאין עומס על שרת מרכזי ) - יש להוריד את ההודעות ( או לסגור כהערה), כי לא יהיה באותו הזמן מי שיראה את ההודעות וילחץ על אישור כדי שהג'וב ימשיך את פעולתו.

 


    • אפשר להכין תוכן מכתב אימייל מנתונים שהתקבלו מביצוע שאילתות SQL. תוכלו לשרשר את הערכים ומילות הקישור, ע"י פונקציות לטיפול במחרוזות.

 


    • ויתכן שתרצו לבדוק אם השם תקין לפי קריטריונים של המערכת שלכם (למשל שם המכיל ערכים נומריים או תווים אלפא-ביתיים וכדומה) תוכלו להכין פונקציות בדיקה שונות במשימת הסקריפט ולהריץ את הפונקציות על המשתנים שהעברתם לסקריפט.

 


    • בסקריפט ניתן לטפל בנתונים מחרוזתיים (במשתנים מסוג DT_STR וכדומה). לדוגמא, כאשר יש לכם קונטיינר שרץ בלולאה על תיקיה מסוימת עם קבצים ומכניס למשתנה את שם הקובץ נוכחי. אם שם כל קובץ אמור להכיל גם נתון מסוים, למשל: שנה/חודש, או מספר סידרתי וכו' ותרצו לפרק את הנתון מתוך שם הקובץ – תוכלו לעשות זאת בסקריפט ע"י פונקציות המטפלות במחרוזות. כמובן שתצטרכו לשם כך להעביר משתנה לקריאה לסקריפט ואולי גם להעביר משתנה גם לכתיבה, לצורך כתיבת הערך שהתקבל.

או ההיפך, אם תרצו ליצור קובץ חדש ששמו מכיל נתונים שהתקבלו מביצוע שאילתות SQL

 


    • אפשר גם ליצור בסקריפט מונה בעזרת משתנה. על ידי המונה אפשר לבדוק, למשל, אם מספר הרצות ה-package על קובץ מסוים עולה על מספר מכסימלי המותר לפי הגדרות המערכת שלכם.

 


    • ניתן גם לבצע חישובים מתמטיים על משתנים – למשל חישוב אחוז שגיאות עפ"י מספר השגיאות שהצטבר במונה במשימה מסוימת.

 

ישנה אומנם אפשרות לעשות דברים כאלו בעזרת ה-expression, אך רק לגבי שדות המאפיינים של המשימה או במשימת ה-''Derived Column – אך רק לגבי שדות הרשומות של קובץ/טבלת המקור באותו ה- 'data flow'.

ב-visual studio 2012  והלאה ישנה משימה חדשה בשם: Expression Task , שבה ניתן לקחת משתנה ובעזרתexpression  להפעיל עליו פונקציות שונות (של מחרוזות, פעולות מתמטיות, בדיקת NULL, תאריך והמרה) ולבדוק אם מתקיימים תנאים מסוימים. זה מאפשר לעשות את הדברים ללא משימת הסקריפט ובצורה יעילה יותר.

 


    • ניתן לבדוק האם בעקבות פעילות של משימת web service'' נוצרו קבצים מסוימים ולשמור את התוצאה במשתנה.

 

 

 

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


    • ויתכן שתרצו לבדוק אם השם תקין לפי קריטריונים של המערכת שלכם (למשל שם המכיל ערכים נומריים או תווים אלפא-ביתיים וכדומה) תוכלו להכין פונקציות בדיקה שונות במשימת הסקריפט ולהריץ את הפונקציות על המשתנים שהעברתם לסקריפט.

 


    • בסקריפט ניתן לטפל בנתונים מחרוזתיים (במשתנים מסוג DT_STR וכדומה). לדוגמא, כאשר יש לכם קונטיינר שרץ בלולאה על תיקיה מסוימת עם קבצים ומכניס למשתנה את שם הקובץ נוכחי. אם שם כל קובץ אמור להכיל גם נתון מסוים, למשל: שנה/חודש, או מספר סידרתי וכו' ותרצו לפרק את הנתון מתוך שם הקובץ – תוכלו לעשות זאת בסקריפט ע"י פונקציות המטפלות במחרוזות. כמובן שתצטרכו לשם כך להעביר משתנה לקריאה לסקריפט ואולי גם להעביר משתנה גם לכתיבה, לצורך כתיבת הערך שהתקבל.

או ההיפך, אם תרצו ליצור קובץ חדש ששמו מכיל נתונים שהתקבלו מביצוע שאילתות SQL

 

 


    • אפשר גם ליצור בסקריפט מונה בעזרת משתנה. על ידי המונה אפשר לבדוק, למשל, אם מספר הרצות ה-package על קובץ מסוים עולה על מספר מכסימלי המותר לפי הגדרות המערכת שלכם.

 

 


    • ניתן גם לבצע חישובים מתמטיים על משתנים – למשל חישוב אחוז שגיאות עפ"י מספר השגיאות שהצטבר במונה במשימה מסוימת.

 

ישנה אומנם אפשרות לעשות דברים כאלו בעזרת ה-expression, אך רק לגבי שדות המאפיינים של המשימה או במשימת ה-''Derived Column – אך רק לגבי שדות הרשומות של קובץ/טבלת המקור באותו ה- 'data flow'.

ב-visual studio 2012  והלאה ישנה משימה חדשה בשם: Expression Task , שבה ניתן לקחת משתנה ובעזרתexpression  להפעיל עליו פונקציות שונות (של מחרוזות, פעולות מתמטיות, בדיקת NULL, תאריך והמרה) ולבדוק אם מתקיימים תנאים מסוימים. זה מאפשר לעשות את הדברים ללא משימת הסקריפט ובצורה יעילה יותר.

 


    • ניתן לבדוק האם בעקבות פעילות של משימת web service'' נוצרו קבצים מסוימים ולשמור את התוצאה במשתנה.

 

 

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

תוכניתנית המפתחת בעבודתה מערכות אינטרא-נט-יות, המשלבות ג'וב של SSIS  . בעלת אתר להדרכה בתכנות אינטגריישן סרוויסז:  http://www.ssis2go.com ודף עיסקי בפייסבוק. דוא"ל: ssis2go.com




מאמרים חדשים מומלצים: 

חשבתם שרכב חשמלי פוטר מטיפולים? תחשבו שוב! -  מאת: יואב ציפרוט מומחה
מה הסיבה לבעיות האיכות בעולם -  מאת: חנן מלין מומחה
מערכת יחסים רעילה- איך תזהו מניפולציות רגשיות ותתמודדו איתם  -  מאת: חגית לביא מומחה
לימודים במלחמה | איך ללמוד ולהישאר מרוכז בזמן מלחמה -  מאת: דניאל פאר מומחה
אימא אני מפחד' הדרכה להורים כיצד תוכלו לנווט את קשיי 'מצב המלחמה'? -  מאת: רזיאל פריגן פריגן מומחה
הדרך שבה AI (בינה מלאכותית) ממלאת את העולם בזבל דיגיטלי -  מאת: Michael - Micha Shafir מומחה
ספינת האהבה -  מאת: עומר וגנר מומחה
אומנות ברחבי העיר - זרז לשינוי, וטיפוח זהות תרבותית -  מאת: ירדן פרי מומחה
שיקום והעצמה באמצעות עשיה -  מאת: ילנה פיינשטיין מומחה
איך מורידים כולסטרול ללא תרופות -  מאת: קובי עזרא יעקב מומחה

מורנו'ס - שיווק באינטרנט

©2022 כל הזכויות שמורות

אודותינו
שאלות נפוצות
יצירת קשר
יתרונות לכותבי מאמרים
מדיניות פרטיות
עלינו בעיתונות
מאמרים חדשים

לכותבי מאמרים:
פתיחת חשבון חינם
כניסה למערכת
יתרונות לכותבי מאמרים
תנאי השירות
הנחיות עריכה
תנאי שימוש במאמרים



מאמרים בפייסבוק   מאמרים בטוויטר   מאמרים ביוטיוב