PracticU

SQL Debugger

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

SQL Debugger
בשיעור מוצג הדיבאגר של SQL Server: איך עוצרים שאילתה בנקודה מסוימת, עוברים עליה שורה אחרי שורה, ונכנסים לתוך טריגר כדי לראות מה קורה בו.
השלבים העיקריים
1. Breakpoint: מסמנים שורה באדום, והדיבאגר מריץ את השאילתה עד אותה שורה ועוצר שם.
2. מעבר שורה אחרי שורה: F11 (Step Into) מתקדם שורה אחת, ונכנס גם לתוך טריגר או פונקציה. Step Over מדלג על פונקציות ורץ הלאה.
3. כניסה לטריגר: בשאילתה של עדכון שם משפחה, Step Into קופץ לתוך הטריגר שמוגדר על הטבלה, והדיבאגר מראה את הקוד שלו.
4. חלון Locals: מציג את המשתנים שקיימים באותו רגע, והערכים שלהם.
5. הדפסת טבלה: בתוך דיבאג לא אפשר לראות טבלה ב-Quick Watch. הטריק הוא לכתוב SELECT * FROM inserted, ולהריץ את השורה הזאת בזמן הדיבאג. התוצאה מופיעה בחלון התוצאות של השאילתה הראשית.
6. הרצה רגילה: F5 מריץ את הקוד בלי דיבאג, ומציג את אותם פלטים בלי לעצור.
טעויות נפוצות
- Quick Watch לא מציג טבלאות ומחזיר שהערך לא ניתן לחישוב.
- אחרי שינוי בקוד צריך לעצור את הדיבאג ולהריץ מחדש, אחרת הדיבאגר עובד על הגרסה הישנה.
שימו לב
דיבאגר הוא כלי נוח לחיפוש בעיות בתוך סקריפט או בתוך טריגר, בעיקר כשהתוצאה לא מתאימה למה שציפיתם.

פרקי ההרצאה: SQL Debugger

  1. 00:00

    דיבאג ב-SQL: מעבר שורה אחר שורה

  2. 00:41

    נקודת עצירה (Breakpoint) והרצה עד אליה

  3. 01:38

    כניסה לתוך טריגר בזמן דיבאג

  4. 02:35

    משתנים מקומיים בזמן הדיבאג

  5. 03:15

    הדפסת טבלה בתוך הדיבאג

  6. 04:14

    בעיה: הפקודה לא בוצעה בדיבאג

  7. 05:37

    Quick Watch לא מציג טבלאות

  8. 07:06

    הדרך להציג טבלה: SELECT

תמלול ההרצאה: SQL Debugger

הטקסט המלא של הדקות הראשונות בהרצאה «SQL Debugger» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    שלום לכולם בהרצאה הזאת אנחנו נלמד על דיבאגר ב-SQL אנחנו נראה איך לעבור בדיבאג שורה שורה אז בואו נתחיל מזה שיש לנו פה סקריפט על המסך איזושהי שאילתה שהכנתי שעושה סלקטים ואפדייטים ואנחנו רוצים למצוא איפה יש איזושהי בעיה נניח

  2. 00:25

    משהו לא עובד כמו שרצינו אז אנחנו לוחצים דיבאג דיבאג זה אומר לעבור שורה שורה בקוד זה אומר לעבור שורה שורה בחוקות ויש לנו סטפ אינטו זה לעבור ממש שורה שורה בסטופ אובר לדלג על פונקציות.

  3. 00:45

    בוא נתחיל מסטפ אינטו. סטפ אינטו מתחיל לעבור שורה שורה ונניח אנחנו שורה ראשונה לא רוצים לדבק אז אנחנו אומרים לו תרוץ מהר עד השורה האדומה עד הברק פוינט.

  4. 00:58

    עד השורה האדומה אתה רץ מהר ואחרי זה אתה עוצר. הנה הוא מתחיל לרוץ אנחנו לוחצים לו פליי ירוק הוא רץ ועוצר לנו בשורה אדומה, זה נקרא break point.

  5. 01:13

    עכשיו עשינו פקודת סלקט, הנה יצא לנו פה שהמשקיע הראשון נקרא best beverages, אנחנו רוצים לעשות update, אנחנו לוחצים פה F11, F11, הופה, עוד F11, הנה התחלף, ראינו שהפקודה התבצעה כמו שצריך.

  6. 01:34

    עכשיו יש לנו update על employees, עושים update על employees, מחליפים שם משפחה, מ-king2 ל-king ואנחנו רוצים לעשות step into להיכנס לתוך ה-update ותראו מה אנחנו מגלים שהוא קפץ לנו לתוך טריגר על הטבלה היה טריגר והוא קפץ לתוכו תראו איזה יופי זאת אומרת שאם אנחנו נעשה פה view solution explorer object explorer הנה ה-object

  7. 02:06

    explorer שלנו משום מה הוא נהיה לנו ממש גדול שנייה הנה הוא ככה אנחנו רגילים לראות אותו על טבלת אימפלואיז אתם רואים שיש פה טריגר והוא נכנס לנו לתוך הטריגר ושימו לב אנחנו נמצאים בזמן הדיבאג כן?

  8. 02:27

    אז אנחנו בתוך הטריגר הזה הבנתם אני לוחץ F11 עוד פעם ואנחנו עוברים שורה שורה ובודקים מה קורה בתוך הטריגר איך הוא עובד ואתם יכולים לראות שאנחנו בתוך טריגר מעדכנים עמודה ומה יש לנו פה יש לנו לוקלס מה זה לוקלס?

  9. 02:47

    לוקלס אנחנו רואים את המשתנים שיש לי בטריגר יש לי Employee ID שהוא שווה ל-7, יש לי עכשיו עוד איזשהו משתנה ואנחנו יכולים לראות שאיך הוא מקבל, שימו לב לפה, תסתכלו לפה, ראיתם? קיבל 7 ו-7 ועכשיו אני רואה If ואני משווה ביניהם, אומר Y, הכל בסדר.

  10. 03:10

    עכשיו, מה קורה אם אני רוצה לראות טבלה? אם אני רוצה לראות טבלה אני צריך לעשות Select, להדפיס אותה. לדוגמה, אני רוצה לראות טבלה, בואו נעצור שנייה את העדכון, אני עושה Stop לטריגר, רוצה להראות לכם איך רואים טבלה, נניח נעשה פה best, תראו אם אני רוצה לראות באמצע טריגר

  11. 03:36

    טבלה נניח של inserted לראות מה יש בתוך טבלה אין לי שום דרך חוץ מטריק אחד חוץ מטריק אחד דיבאג זה אני סתם כותב לעצמי שימו לב מה הטריק אני כותב סלקט כוכבית from inserted ועכשיו כשאני רץ עד לכאן ברצף שימו לב אני מתחיל לרוץ בדיבאג עד לכאן ברצף את זה אני יכול כבר להרביא, פה אני אומר לו תרוץ מהר עד לכאן, הופה, רץ מהר עד לכאן, אני עושה F11,

  12. 04:16

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

  13. 04:54

    פעם, ללחוץ סטפ אינטו, סטפ אינטו. אתם רואים, הוא לא ביצע לי את הפקודה. יפה מאוד, אני עושה קונטרול A על ה-Tree, קונטרול C, פותח קווירי חדש, עוצר את השאילתה, עוצר אותה, פותח שאילתה חדשה לגמרי, עושה פה אלטר, ורוצה לעשות לכם פה דיבאק.

  14. 05:31

    דילקט, כוכבית, פרום, אינסרטד. זו הדרך היחידה לראות מה יש לנו בתוך אינסרטד. אני עושה אלתר טריגר, הוא לא רוצה להראות לי למה הוא לא רוצה first name.i.last name.i.employeeid אוקיי, את זה הוא ירצה לעשות לי, יפה מאוד בוא ננסה סוגרים את זה מריצים עוד פעם דיבאג דיבאג ניכנס לתוך זה וזה מה שרציתי להראות לכם זו השיטה

  15. 06:56

    היחידה להדפיס טבלה אי אפשר סתם לראות מה יש בטבלה כי הוא לא יודע לעשות עליה quick watch אם אתם עושים quick watch, הוא cannot be evaluated.

  16. 07:06

    אתם רואים, הוא לא יודע להראות לכם טבלאות. זאת אומרת, גם פה הוא לא יודע להראות לכם טבלאות. הדרך היחידה זה לעשות Select. ברגע שאתם עושים Select, תראו איפה זה מודפס.

  17. 07:18

    זה מודפס כאן למטה.

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: טריגר רק על עמודה אחת

ההרצאה הבאה: הכל על Stored Procedure

הרצאות קשורות מקורסים אחרים

  • Debugger
  • אנדרואיד Debugger
  • LINQ ל- SQL
  • התקנה של SQL

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI