חישוב גודל אינדקסים ובמה לטפל

26/01/2018

  חיפוש באינטרנט אחר סקריפטים לחישוב גודל אינדקסים (storage size) מחזיר הרבה דוגמאות דומות המתבססות על טבלת המערכת sys.allocation_units (למשל כאן). הבעייה היא שהסקריפט מטפל באינדקסים "רגילים", וכך קרה שפיספסתי אינדקסים על XML.. החלופה היא לפנות לפונקציית המערכת sys.dm_db_index_physical_stats , למשל כך (טבלה מסויימת): Select S.index_id, (Select name From sys.indexes I Where I.object_id=Max(S.object_id) And I.index_id=S.index_id), 8*Sum(page_count) 'Indexsize(KB)' From sys.dm_db_index_physical_stats(DB_ID(),Object_ID('MyTbl'),Null,Null,Null) S Group By index_id Order By Desc; למה זה טוב? להרבה דברים, למשל - להתבסס עליו כדי לגלות את האינדקסים הלא...
אין תגובות

Set ArithAbort, Execution plans, ושיפור ביצועים

08/12/2017

תודה מראש לעדי כהן על העזרה בפתרון הבעייה ובכתיבת הפוסטאת ההרצאה על Set ArithAbort שמעתי כבר כמה פעמים: הפרוצדורה רצה לא טוב דרך האפליקציה, רצה טוב ב-SSMS, וכל זה בגלל שהגדרת ברירת המחדל של ArithAbort (שאין לה שום השפעה ישירה על הפרוצדורה) גורמת לכך שהמערכת יוצרת Execution Plan אחד באפליקציה ואחר ב-SSMS (שוב- רק בגלל שכל סביבה נחשבת לשונה בגלל הנ"ל), וכך המערכת שומרת שני Execution Plans שונים, מבזבזת משאבים ומבלבלת את ה-DBA-ים שאינם מבינים מה השתבש. כאמור - שמעתי מספר פעמים, אבל רק השבוע זה קרה לי בפעם הראשונה: יש אפליקציה שרצה, מריצה אחת לכמה דקות פרוצדורה...
אין תגובות

Azure תומכת בטבלאות זמניות גלובליות

06/12/2017

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

סיכום הרצאות בלפטופ בשילוב תמונות

07/10/2017

עוד כמה שבועות אטוס לסיאטל, ל-Pass Summit: חוויות, הרצאות, חו”ל, קצת ללמוד, קצת להינות, ולחזור ארצה עייפים אך יגעים.. יש מי שמגיעים בשביל החוויה או לפגוש את הבראנז’ה (networking), אבל אני משתדל בעיקר ללמוד,ובין לבין יש מספיק זמן לכל השאר. בהרצאות אני מנסה לסכם את עיקרי הדברים, ולרוב אני עושה זאת ב-Google Doc: נוח, לא צריך להתקין שום דבר, והכל נשמר. החלק המסובך הוא כשאני רוצה לצלם את מה שמוצג על המסך: נכון שניתן להוריד את המצגת והסקריפטים, אבל מה שרואים כרגע הוא יותר אמיתי, ולמי יש סבלנות לחכות להורדת המצגת?..פעם ניסיתי לצלם ולהעביר למסמך הסיכום, אבל זה היה...
תגיות: , ,
אין תגובות

תזמון משימות ב-SQL Databases ב-Azure

04/10/2017

בניגוד ל-VM שיש להם – כמו לכל שרת – agent, ג’ובים, וכו’; ב-SQL Databases (או Paas) זה קצת יותר מורכב.כרגע, Azure מציע אוסף של כלים, פתרונות וטכנולוגיות; שלא תמיד מסונכרנים בינהם, ולכן אין פתרון אחד, ומה שיש כיום זה לא מה שיהיה מחר.בכל מקרה: פתרון אפשרי, נכון לעכשיו. Automation Accounts – נכנסים לזה מהתפריט הראשי בפורטל. אם יש כבר חשבונות – ניתן להשתמש באחד מהם, ואם לא – יוצרים חדש. Credentials – יש ליצור credential מתאים לדטבייס איתו רוצים לעבוד (אופצייה מתחת ל-Automation Account): שם משתמש, וסיסמה. בקוד עצמו, בהמשך, נעשה שימוש ב-credential, ולא נציין באופן גלוי שם וסיסמה....
אין תגובות

Bitcoin – מה זה ואיך זה

12/09/2017

הקדמה מה זה ביטקוין? מאוד פשוט, לא? זה מטבע וירטואלי, משהו עם blockchain, וזה גם cryptocurrency..האמת – קשה להבין, לי לקח הרבה זמן להיות מסוגל להסביר לעצמי במה מדובר, וגם אלה שבתחום – לא פעם מתמקדים בהיבט טכני שלו אותו הם מכירים היטב, אבל מתקשים לראות ולהבין את התמונה הכוללת.במה דברים אמורים? יצא לי להכיר משקיעים שהייתה להם דעה מלומדת באילו מניות להשקיע, ויתכן אף שהם באמת ידעו ולא סתם זרקו דברים ללא כיסוי, אבל לא ידעו מה זה “מנייה”.. מבחינתם מנייה הייתה משהו שמוכרים וקונים, והפיקח – קונה בזול ומוכר ביוקר, ומה זה בדיוק? זה מה שזה –...
תגיות: ,
אין תגובות

External Data Source: תחליף ל-Linked Server ב-Azure

11/09/2017

לפני יותר משנה כתבתי פוסט על פנייה בין דטבייסים שונים ב-Azure. והראיתי כיצד ניתן ליצור External Tables, כלומר – קישור לטבלאות בדטבייס אחר ב-Azure. לא כמו Linked Server שמאפשר לגשת לכל מה שיש בשרת (בכפוף להרשאות), External Tables הוא לטבלה בודדת. מי שרוצה יותר מזה, יכול להיעזר באותה תשתית (Master Key + Database Scoped Credential) כדי ליצור  External Data Source, שהוא המקבילה ל-Linked Server בעולם ה-Azure, כשמדובר באובייקט ברמת הדטבייס. קודם כל ניצור באופן חד פעמי Master Key Encryption (אם יש- אי אפשר ואין צורך באחד נוסף): --Drop Master Key;If Not Exists (Select * From...

Sync ב-SQL Azure: רפליקציה בין דטבייסים

02/09/2017

אופציית Sync מהווה תחליף נוח לרפליקציה בין דטבייסים ב-Azure: יש מספר מגבלות, אבל השימוש פשוט וקל. המצרכים: שני דטבייסים, ובאחד מהם טבלה עם Primary Key (בלי זה אי אפשר).המקור נקרא Hub והיעד Member, נעים מאוד! ניצור Sync Group חדש, כולל טבלה לסינכרון: שם – בסגנון חופשי.מרווח מינימלי לסנכרון – 5 דקות. לכאורה יש אופציה למרווח בשניות, אבל אי אפשר לכתוב פחות מ-300 שניות.. זה החסרון העיקרי של הכלי, בעיקר למי שרוצה רפליקציה מעודכנת קרוב לזמן האמיתי.במקרה של קונפליקט בין טבלת המקור להעתק – המקור (Hub) מכריע. כנראה שסעיף זה נועד ל-B Directional Sync (בהמשך).כעת צריך להמתין עד...
אין תגובות

קריאת קבצי XML בעזרת Python

15/08/2017

קריאת קבצי XML זה נושא כאוב ב-SQL Server, אם תשים תחבושת לא יעזור לך שנתיים: הפקודה אינה נוחה, לא משנה כמה פעמים השתמשתי בה בעבר – בכל פעם מחדש אני יוצא מדעתי והדברים ארוכים. בנוסף לכך – יש להכיר את הסכימה של ה-XML כדי “לפרסר” אותו בעזרת TSQL.יתכן שבמקרים מסויימים נצליח להיעזר בפתרון שלהלן, בכפוף לכך שהגרסה שלנו תומכת בפייתון (2017 וצפונה), ושה-XML כתוב כך שהפייתון יכול לו: הוא אינו אוהב שבכותרת הקובץ יש שורת פרטים בסגנון של <?xml version="1.0" encoding="UTF-8"?> תווים מסויימים מוציאים אותו מדעתו, בעיקר ‘גרשיים’ בודדים אם הופכים את המידע ל-JSON, סגירת תגיות לא מפורשת- <foo>bla..bla..bla</>...
תגיות: , , , ,
אין תגובות

עיצוב אימיילים ב-SQL Server בעזרת Python

13/08/2017

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