שמירת קבצים בתוך טבלה

18/09/2011

SQL Server מאפשר לשמור קבצים בינאריים בתוך טבלה. למשל- טבלת עובדים בה יש עמודה המכילה את התמונה של כל עובד. כדאי כבר להקדים ולציין שהשימוש בכלי הזה בעייתי- קבצים גראפיים ואחרים נוטים להיות גדולים מאוד, וכשמדובר בטבלאות גדולות – נפח האחסון שלהן גדל למימדים מעוררי חלחלה.. לא לנסות בבית, ובטח שלא במשרד! החל מגרסת 2008 R2 יש פתרון חלופי – Filestream – בו הקובץ נשמר בנפרד על הדיסק והדטבייס שומר על גודל שפוי (כתבתי על כך פוסט בעבר), אבל אני אעסוק כאן דווקא בפתרון הישן. ניצור בכונן C: מחיצה בשם Tmp...
תגיות: ,
אין תגובות

יצירת אובייקטים משותפים

15/09/2011

ב-SQL Server ניתן ליצור פרוצדורות מערכת ו-Views מערכת (וכפי שנראה בהמשך- גם טבלאות), כשהכוונה לאובייקטים שיוצרים אותם וניתן להשתמש בהם בכל הדטבייסים כאילו היו מקומיים (כלומר- לא יוצרים אותן בכל דטבייס בנפרד אלא פעם אחת עבור כולם), והתנאים כדלקמן: 1. יש ליצור את האובייקט (פרוצדורה או View) בדטבייס master. 2. שם האובייקט צריך להתחיל בשלושת התווים SP_. 3. יש להכריז על האובייקט כאובייקט מערכת באמצעות הפרוצדורה (הלא מתועדת) SP_MS_MarkSystemObject. נבדוק איך זה נראה: ניצור ב-master (תנאי 1) ארבעה אובייקטים – שתי פרוצדורות ושני Views בהתאם לתנאי מספר...
תגיות: ,
אין תגובות

Violation of PRIMARY KEY constraint

10/09/2011

הודעת התקלה נ"ל מופיעה כשמנסים להכניס לטבלה רשומות שיוצרות כפילות במפתח. כיצד מונעים זאת? ראשית חכמה התהליך צריך להיות בנוי כך שדברים כאלו לא יקרו, הרי לא מכניסים רשומות לטבלה ומקווים לטוב. אמורה להיות סיבה שתמנע תקלה כזו: אולי בכל יום מגיעים נתונים חדשים שנבדקו ובטבלה יש נתונים רק עד אתמול, אולי מתבצעת מראש מחיקה גורפת של נתונים מהטבלה או חלקית לפי הפילטר של אלו העומדים להיכנס, וכו'. אני אעסוק כאן בטיפול בנקודת הכניסה, בעמדת הש"ג של הטבלה, וזה כמובן אינו מחליף את הטיפול המערכתי המתבקש. למניעת הכנסת...
תגיות: ,
אין תגובות

באגים של מיקרוסופט?

09/09/2011

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

מדדי מרכז: ממוצע (Average), חציון (Median), שכיח (Mode), אמצע טווח (Midrange)

07/09/2011

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

פרוצדורה להעתקת נתוני טבלה מהייצור לפיתוח

02/09/2011

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

Template for Cursors

01/09/2011

כתבתי פעם פוסט על Cursors והאופציות השונות שלהן. מכיוון שאחת לכמה שבועות אני צריך להשתמש ב-Cursor ואין שום סיכוי שאזכור בעל פה את כל הפקודות, אני שומר במקום סודי Template משלי, משתמש בו, וגם מעדכן אותו כשאני משתכנע שעדיף אחרת: Declare @.. ..;   If Cursor_Status('local','Cr') In (0,1) Or Cursor_Status('global','Cr') In (0,1) Begin Close Cr; Deallocate Cr; ...
תגיות: , ,
אין תגובות