כיצד מאפסים עמודת מספור אוטומטי (Identity) בטבלה?

30/11/2011

פעם כתבתי פוסט לגבי עמודת Identity וציינתי שם שניתן לאפס את המונה בטבלה MyTbl ולהתחיל מחדש מ-1 כך: DBCC CheckIdent(MyTbl,Reseed,0); Go כמובן שלא חייבים לאפּס לאֶפס, אלא שבדרך כלל אנחנו מתחילים את המנייה בטבלה חדשה מ-1, ואנחנו מאתחלים (את המונה ואת המערכת כולה) כדי להתחיל את המשחק מחדש (נניח- סיימנו "לשחק" לצורך דיבוג וכעת מתחילים לעבוד "באמת"). מי שלא זוכר בעל פה את הפקודה ואין לו חשק להתחיל לחטט בבלוג שלי או ב-BOL, יכול פשוט לבצע Truncate לטבלה: זה זהה ליצירתה מחדש והמונה יאותחל מניה וביה....
תגיות: ,
אין תגובות

קאלן דלאני (Kalen Delaney) מגיעה לארץ

28/11/2011

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

מניעת הרצות בו זמניות של פרוצדורה

27/11/2011

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

ColumnStore Index – הכרות ראשונה עם האינדקס החדש ב-SQL Server 2012

18/11/2011

גרסת SQL Server 2012 מפנקת אותנו עם שלל הפתעות וחידושים, ובינהם אינדקס מסוג חדש – השומר לפי עמודת. במה דברים אמורים? הטבלה עצמה נשמרת ללא שינוי כ-Heap או כ-Clustered Index - שורה אחר שורה. על טבלה זו ניתן ליצור אינדקס בו הנתונים ישמרו לפי עמודות – בהתחלה נתוני עמודה אחת, לאחר מכן נתוני עמודה שתיים וכו'. אופציה זו אמורה להיות נוחה בעת שליפה של כמות גדולה של נתונים. מדובר אם כך בארגון פיזי שונה של האינדקס, אך מבחינתנו בלא יותר מאשר שינוי קל בהגדרת האינדקס. האופציות בהגדרת ColumnStore Index אינן רבות וכוללות בדרך כלל רק את רשימת העמודות שיש...
תגיות: ,
3 תגובות

מניעת ריבוי שורות פעילות בטבלה

17/11/2011

במקום העבודה שלי יש טבלה ובה רשימת תהליכים שמריצים מדי פעם. יכול להיות שמדובר בטבלת התהליכים עצמה, ויכול להיות שמדובר בטבלת לוג בה מצויין איזה תהליך רץ מתי. מה שחשוב לענייננו הוא שיש שם עמודת סטטוס שמציינת איזה תהליך רץ כעת, ומותר רק לתהליך אחד לרוץ בכל רגע נתון, כלומר- שורה אחת בלבד עם סטטוס 1 וכל השאר עם סטטוס 0. הטיפול בזה מתבצע כמובן בקוד שאמור לעדכן את השורה עם תחילת הריצה ובסיומה, וכן במקרה של תקלה ועצירה לא צפויה של התוכנית; אבל אנחנו רוצים לגבות את זה כך שלא תהיה כל אפשרות מעשית לעקוף...
תגיות: ,
אין תגובות

כיצד מוצאים מי עשה לנו סיפתח

16/11/2011

סיפתח לפי המילון העולמי לעברית מדוברת (דב"א ובן יהודה, ואין הכוונה לא ל-DBA ולא לאליעזר בן-יהודה) הוא המכירה הראשונה בבסטה בשוק, שמשולה ליורה הפותח את עונת הגשמים. אנחנו רוצים למצוא מי הלקוח הראשון שקנה אצלנו בכל יום, ומשימה כדוגמת זו גורמת לרבים להסתבך: ברור שיש כאן שימוש ב-Group By לפי יום, וגם Min על משהו שכן מדובר במכירה הראשונה באותו היום. אלא מה- אם נעשה Min על השעה או המונה או מספר ההזמנה, אז היכן הלקוח? ואם נעשה Min על הלקוח – לא נקבל את הלקוח הראשון שנכנס לחנות אלא את הראשון לפי סדר הא"ב.....
תגיות: ,
אין תגובות

הפרדה בין קבצי Trace של ג'ובים

14/11/2011

כשמריצים ג'וב יש אפשרות להפנות את הפלט של הג'וב לקובץ או לטבלה (הכוונה להודעות המערכת כמו כמה שורות עודכנו בטבלה או הודעות שגיאה במקרה של תקלה, פקודות Print למעקב ששתלנו בקוד וכו'): בדוגמה זו ה-Trace מופנה לקובץ: כך מקובל, בעיקר כשיש הרבה שורות פלט ולא רוצים להכביד על המערכת בפעולות כתיבה לטבלאות. כפי שניתן לראות- אופציית Append output to existing file מאפשרת לנו לבחור אם ליצור בכל ריצה קובץ Trace חדש שידרוס את הקודם (כשהתיבה אינה מסומנת), או לעדכן את הקובץ הקיים. לשתי האפשרויות חסרונות: אם נדרוס את הקובץ...
תגיות: ,
אין תגובות

יצירת גליונות Excell מעוצבים

09/11/2011

  העובדה שניתן לייצא נתונים מ-SQL Server לאקסל או לייבא מאקסל ל-SQL Server- אין בה כל חידוש, ולכל מי שעבד עם מערכות BI זה מובן מאליו, ויש שלל דרכים לעשות זאת. החידוש הוא שניתן לא רק לייצא נתונים לאקסל, אלא גם לעצב את הגיליון כרצוננו. קודם כל- נאפשר שימוש ב-XP_CmdShell וב-OLE: Exec SP_Configure 'show advanced options',1; Go Reconfigure; Go   Exec sp_configure 'xp_cmdshell', 1 ...
תגיות: ,
אין תגובות

אילו ג'ובים רצים כרגע?

02/11/2011

כיצד נדע אילו ג'ובים רצים או האם ג'וב מסויים רץ כרגע? בדרך כלל ניגש ב-SSMS לסעיף Jobs (ב-SQL Server Agent) ונגיע להיסטוריה על ידי קליק ימני על הסעיף או על הג'וב הספציפי: הבעייה היא שכך נגיע לרשימת הג'ובים שרצו והסתיימו, אך לא לאלו שרצים כרגע. במקרה הטוב, אם לג'וב יש מספר צעדים (Steps) נוכל לראות את אלו שרצו וללמוד מכך על מה שרץ כרגע, אך מה עם ג'ובים שיש להם רק צעד אחד או שהם עדיין בצעד הראשון? האובייקטים השונים המטפלים בג'ובים,...
תגיות: ,
אין תגובות

מקדם המתאם

01/11/2011

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