Contained Databases–דטבייסים “הכל כלול” (בתרגום חופשי)

יום רביעי, אפריל 4, 2012

החל מגרסת SQL Server 2012 התווספה יכולת חדשה של יצירת Contained Databases, כשהכוונה ליכולת ליצור דטבייסים עצמאיים שאינם תלויים פונקציונלית בשרת. לכאורה דרישה הגיונית לאור העובדה שבדטבייס רלציוני צריכות להיות טבלאות, מפתחות ראשיים, ויחסים בין הטבלאות (1:N, 1:1, N:N) ותו לא; אבל לצרכים מעשיים יש עוד כמה דרישות שדטבייס עצמאי מתקשה להתמודד איתן. SQL Server הוא מערכת, ובתור שכזה- הרכיבים השונים בו אינם עצמאיים. למשל- טבלה אינה יכולה להתקיים בנפרד מהדטבייס: ניתן אולי לייצא את ההגדרות והנתונים שלה לקובץ טקסט או ל-Excel, אך לא את הטבלה עצמה. דטבייס, לעמות זאת, יכול לכאורה להתקיים בנפרד- ניתן ליצור...

חישובי מלאי

יום שבת, מרץ 3, 2012

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

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

יום שישי, פברואר 24, 2012

לפני כשבועיים כתבתי פוסט לגבי שליפה אקראית של שורות מטבלה, ולמרבה הצער היו שתי אפשרויות שלכל אחת חסרונות משלה: 1. שימוש במיון בעזרת New_ID שמחזיר את התוצאה המבוקשת אבל כרוך במיון של טבלה שעלולה להיות גדולה מאוד. 2. שימוש בכלים מובנים של SQL Server ש”עולים” פחות אבל מחזירים מספר שורות שלא ניתן לצפות מראש במדוייק. גרסת 2012 שעומדת להשתחרר ב-07/03/2012 כוללת את אופציית ה-Paging שיכולה לסייע לנו במקרה זה: נשלוף 20 שורות (או כל מספר אחר) החל מנקודה אקראית בטבלה. המחיר יהיה פניה לטבלת המערכת sys.sysindexes כדי לברר כמה שורות...
אין תגובות

בעיות Collation בפונקצייה Concat

יום ראשון, פברואר 19, 2012

גרסת SQL Server 2012 מביאה לא מעט חידושים משמחים, ואחד מהם הוא הפונקציה Concat שמשרשרת מספר מחרוזות למחרוזת אחת, בדומה לשימוש באופרטור + לשירשור, אך באופן ידידותי יותר: אין צורך להפוך מספרים ותאריכים לטקסטים בעזרת Cast וגם לא להמיר ערכי Null למחרוזות ריקות פן יהפכו את השירשור כולו ל-Null (מקווה שהבעיות שציינתי שנפתרו- מוכרות). בהחלט שווה! דא עקא שפתרו הרבה בעיות קיימות, אבל הכניסו בדלת האחורית בעייה חדשה שלא הייתה קיימת עד כה. נניח שאנחנו רוצים לקבל מדטבייס ReportServer רשימת טבלאות עם שם הסכימה משורשרת אליהן כמקובל, ופונים...
אין תגובות

תקלה בהתקנת SQL 2012 RC0

יום ראשון, ינואר 29, 2012

גרסת RC0 זו גרסת ההתנסות האחרונה לפני ההשקה של SQL 2012 בפורים. מי שמתקין אותה בשיטת מיקרוסופט (Enter => Next => I Agree => Choose Default/Recommended Option => OK..) עלול לקבל במהלך הגדרות ההתקנה הודעת שגיאה בהאי לישנה: There was a failure to validate setting CTLRUSERS in validaton function ValidateUsers, ולינק לכתובת באינטרנט שלא מופיע בה מידע רלוונטי או הצעה לפתרון. הפתרון: בשלב Distributed Replay Controller יש להקיש <Next> ולא לבחור ב-Add Current User (בה השתמשנו באחד השלבים הקודמים לבחירת sa): כדאי לשים לב שבמהלך הגדרות ההתקנה- אנחנו מתקדמים על...
אין תגובות

בדיקת טבלת Slowly Changing Dimension בעזרת פונקציית Lag

יום שישי, ינואר 13, 2012

פונקציית Lag – מחידושי SQL Server 2012 שניתן להתייחס בעזרתה לרשומות קודמות ללא Self Joins מסורבלים, מאפשרת בין היתר לבצע ביקורת איכות לטבלאות SCD בקלות רבה יותר. בפוסט שפרסמתי לאחרונה הופיע סקריפט ליצירת טבלה מתאימה, וכן שליפה למציאת שגיאות המבוססת על Group By. לא אחזור כאן על הסקריפט, אלא רק אראה כיצד ניתן להגיע לחריגים בקלות בעזרת הפונקציה Lag: With T As(Select *, Lag(EndDate,1,Null) Over(Partition By ID Order By StartDate) PreviousEndDateFrom T_SCD)Select *From TWhere PreviousEndDate+1<>StartDateOrder By ID, ...
אין תגובות