כיצד ניתן להפעיל ג'וב עם פרמטרים?

28/08/2013

לא ניתן! (יכולתי לסיים כאן ולזכות בתואר הפוסט הכי קצר באתר, או הפוסט היחיד שהכותרת שלו ארוכה מהתוכן וכו') לא סתם אי אפשר, אלא אין בזה הגיון: ג'וב מפעילים באופן עקיף בעזרת ה-Scheduler שקובע מתי הוא ירוץ, או באופן ישיר בעזרת פרוצדורת המערכת SP_Start_Job. במקרה הראשון (הפעלה מתוזמנת), מה בדיוק ההגיון בשימוש בפרמטרים? אם הוא יתוזמן ויופעל פעם אחת– הפרמטרים יכולים להיות חלק ממנו, ואם הוא יתוזמן ויופעל דרך קבע – מה בדיוק הרעיון ומהיכן הצורך בפרמטרים? במקרה השני (הפעלה יזומה)– יש לשאול קודם כל למה ג'וב ולא פרוצדורה, הרי רוצים...
תגובה אחת

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

21/08/2013

צצה בעייה כדלקמן: רוצים לשלוף את השורה הראשונה מכל יום, מטבלה הממויינת לפי עמודת התאריך. מכיוון שהטבלה ממויינת, לכאורה אין צורך למיין אותה שוב, אבל כדי לחלק את הטבלה ל-Partitions על פי ימים שלמים (אינני מתכוון לחלוקה פיזית אלא לפרמטר בפונקציות החלון) – יש צורך להפעיל פונקציה על התאריך, וכתוצאה מכך המערכת אינה משתמשת באינדקס, למרות שהדעת נותנת שהסדר לא צריך להשתנות ושניתן להפעיל "שיקול דעת" במסגרת האופטימייזר. דוגמה להבהרת הבעייה, ניצור טבלה עם כ-250,000שורות (טבלת sys.messages בגרסת 2012), ונחשב לה באופן מלאכותי עמודת תאריך שתשמש כ-Clustered Index (כלומר – תישמר ממויינת פיזית על פיו): ...
אין תגובות

שימוש באופרטור Values לשליפת הערך המקסימלי מתוך מספר עמודות

19/08/2013

כתבתי בעבר פוסט מקיף על האופרטור Values, והפוסט הזה נועד להציג פתרון מעט שונה לאתגר של שליפת הערך המקסימלי מבין מספר עמודות, ושם העמודה בה נמצא ערך זה. נתונה טבלה לדוגמה עם מספר ערכים לכל עובד (נניח- ציון בבחינה שמתוכו יש לקחת בחשבון את המקסימלי): If Object_ID('tempdb..#T','U') Is Not Null Drop Table #T;   Create Table #T(Nombre Varchar(20), campo1 Int, campo2 Int, campo3 Int, campo4 Int, campo5 Int, campo6 Int);   Insert ...
תגיות: , , ,
אין תגובות

אינדקס על עמודות מחושבות

18/08/2013

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

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

16/08/2013

דוחות חשבונאיים הם היררכיים בדרך כלל. למשל דוח רווח והפסד שאמור להציג את ההכנסות וההוצאות של הארגון ולחשב את הרווח כהפרש בין שניהם כולל פירוט של כל אחד מהשניים למספר סעיפים. למשל- ההוצאות מתחלקות כך: 1. הוצאות תפעול (ישירות) 2. הוצאות שיווק, הנהלה וכלליות 3. הוצאות מימון ואחרות כל אחד מהסעיפים מתחלק לסעיפי משנה, אלה לתת סעיפי משנה וכך הלאה. בדוחות עצמם, שמסכמים המון תנועות יומיומיות במהלך השנה, מספר ההיררכיות יהיה 3-5 לכל היותר כדי שהדוח יהיה "קריא" ויתמקד בעיקר, אך במערכת עצמה העומק יכול...
אין תגובות

מידע על נעילות

14/08/2013

נעילות הן אוייב רשע וחמקמק שיש לתפוס אותו על חם ולהיפרע ממנו: בדיעבד קשה לדעת מי חסם את מי – איזה תהליך עדכן איזו טבלה ומנע מתהליכים אחרים לגשת אליה - ולנקוט בצעדי מנע לעתיד. פנו אלי עם איזו שליפה עתיקת יומין שרצה ב-SQL 2005 ועושה שימוש בטבלאות מערכת כמו master.dbo.sysprocesses שהשתדרגה בגרסת 2000 ל-sys.sysprocesses, בטרם התקדמנו ב-2005 ל-DMV's ו-DMF's למיניהם. השליפה ההיא דווקא עשתה עבודה טובה יחסית ושלפה מטבלאות המערכת את המידע הרלוונטי, אך ראוי לעבור למקורות שנתמכים ושלא צפויים להיעלם בקרוב. המעבר ל- DMV's ו-DNF's אינו פשוט כל כך מכיוון שלא מדובר רק בשינוי שמות, אלא שמידע...
אין תגובות

Policy Management

10/08/2013

כלי מגרסת 2008 שנועד לעקוב ולאכוף מדיניות, למשל- של שמות לטבלאות, הגדרות של דטבייסים או לוגינים ועוד. מכיוון שרק שמעתי על זה עד כה, החלטתי ללכלך קצת את הידיים ולראות מה הועילו חכמי מיקרוסופט בתקנתם. בהתחלה חשבתי לנסות ולאכוף בעזרת הכלי הזה מדיניות המחייבת יצירת Primary Keys לכל הטבלאות, אלא שאופציה זו אינה קיימת, ולכן הסתפקתי בחיוב יצירת Clustered Index. מגרש המשחקים נמצא מתחת ל-Management: כדי ליצור מדיניות המחייבת יצירת Clustered Indexes לכל הטבלאות בדטבייס MyDB יש ליצור שני תנאים (Conditions): אחד לגבי הדטבייס ואחד לגבי...
אין תגובות

האופרטור Escape

04/08/2013

מי מכיר את האופרטור Escape?.. רגע, לא את המקש <Escape> במקלדת אלא את האופרטור ב-TSQL? אף אחד?.. למען ההגינות – גם אני בקושי הכרתי אותו, וחשבתי שבשל נדירותו – מדובר במשהו לא מתועד, אבל מסתבר שהוא בהחלט מתועד ואפילו שימושי, למרות שנכון – אינו רווח. האופרטור נועד לסייע בחיפושים העושים שימוש ב-Like ושכוללים תווים בעייתיים או "שמורים". למשל- כולם יודעים שתו אחוזים (%) מציין רצף כלשהו של תווים, קצת פחות יודעים שקו תחתון (_) מציין תו בודד כלשהו, סוגריים מרובעים () מציינים תו כלשהו מתוך...
תגיות: , , , ,
אין תגובות