
sys.databases. בסיסי המערכת master, model ו-msdb לא נכללים בגיבוי..bak.BACKUP DATABASE עם שם הבסיס ועם היעד TO DISK לנתיב שנבנה.DECLARE db_cursor CURSOR FOR SELECT name FROM master.sys.databases WHERE name IN (...)OPEN db_cursor ו-FETCH NEXT FROM db_cursor INTO @nameBACKUP DATABASE @name TO DISK = @pathCLOSE db_cursor ו-DEALLOCATE db_cursorהטקסט המלא של הדקות הראשונות בהרצאה «cursor - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, שיעורנו היום הוא המשך בנושא של קרסורים, המשך לשיעור הקודם בו ראינו עבודה מול קרסור פשוט. בשיעור הזה אנחנו רוצים לראות גם קרסור, לא מסובך, אבל עדיין נותן לנו שימוש אמיתי בחיי היום יום מתוך דוגמה מעשית לעבודה עם קרסור.
בשימוש שלפנינו אני מעוניין לייצר תוכנית תחזוקתית אשר ארצה לי על כל הבסיס נתונים, על כל הבסיסי נתונים אשר נמצאים מותקנים לי כרגע באינסטנס בתוך אינסטנס הנוכחי שלי בשנה ולבצע עבורם גיבוי, לבצע גיבוי עבור כל דאטאבייס ודאטאבייס.
איך אנחנו עושים זאת? קודם כל אני צריך לזהות מהם בסיסי הנתונים שקיימים. את זה אנחנו יכולים לגשת לטבלת מערכת name from master.sysdata.bases סיס דאטאבייסס זוהי טבלה שנותנת לנו בעצם את כל בסיסי הנתונים שמותקנים לנו כרגע בתוך המערכת.
אני אריץ את זה F5 ונפתח כאן את ההודעה, אנחנו נראה את כל הבסיסי נתונים שרצים. יש לנו את ה-System Databases כמו המאסטר, 10DB מודל וה-LSDB, אותם אנחנו לא רוצים לגבות. בואו נבחר לעצמנו כאן שני דאטאבייסים על מנת לא להכביד על התוכנית.
Sale for you ו-Northwind. נבחר את שני הבסיסי הנתונים הללו, אותם אנחנו רוצים לגבות. כדי לא לגבות אותם אחד אחד, כי הם רק שניים, תחשבו שהייתה לי כאן השרה והייתי צריך לגבות אותה, אז על מנת לא לעבור עליה בצורה עידנית אנחנו ניצור קרסור עבור בסיסי, עם השם של בסיסי הנתונים ועבור כל שורה ושורה נפעיל את פקודת דקאפ דאטאבייס.
דקאפ דאטאבייס שם של הדאטאבייס וניתן לו את הנתיב המתאים. אז בואו נתחיל. ראשית כל אנחנו מגדירים לעצמנו. נגדיר לעצמנו את השם של הדאטאבייס, נקצה לו 50 תווים, זה יכול להספיק לנו בשביל השמות של הדאפאבייסים שכרגע מותקנים לנו.
בנוסף לזה, בנוסף לשם של הדאפאבייס אנחנו צריכים את הנתיב ששם אנחנו רוצים לכתוב, שם אנחנו רוצים לייצר את הגיבוי, אז בואו נקרא עוד משתנה נוספת, "FyTough".
כבר קר גם כאן, כבר ניתן לזה 50. הגדרנו את המשתנה "עזר" לרוץ עליהם בלולאה של הקרסור, כרגע בואו נייצר את הקרסור עצמו. הדבר שלו: declare db-cursors ניתן לו אובייקט ניסוי cursor, 4. למה הוא ה-select?
ה-select הוא אותו סלקט שראינו אותו מקודם. Select name הוא master.db.sysdatabases אנחנו רוצים להגדיר. בואו לא נרוץ על כולם. ב-ware name נבחר רק שני דאטאבייסים על מנת שהתוכנית תרוץ לנו בזמן סביר.
נוף ווין. פסיק סיימס פור יו. אוקיי. בחרנו את הבסיס לנתונים, נגדרנו את תוכנית השאילתא עבור הקרסור, קרסור כרגע מוגדר כל שמותר לנו כרגע כדי להתחיל בעבודה.
קדימה, לפתוח את הקרסור ולהתחיל לרוץ עליו. בואו נוריד קצת קצת ונתקדם. Open Cursor. DB Cursor. Fetch Next.
From DB Cursors. Into. למי אנחנו שופכים את הנתון הזה? אנחנו שופכים את זה ל Strudel Name, למשתמש המחזיק לנו row by row את שם הדאטה בסן הנוכחי, שם הדאטה בסן המיועד לגיבוי, לדקה.
אוקיי, לולאה. פייל שטרודל פאט שווה לאפס אנחנו נכנסים לתוכנית הוויין בגין בעבור כל שורה אנחנו מגדירים את הדברים הבאים ראשית כל מגדירים את הנתיב פייל פאט שאליו אנחנו מגבים c backup נשרשר לזה את שם הדאטאבס name וסיומת של bak זהו הגיבוי לכאן ייכנס לנו הגיבוי אוקיי זה הפייל פאט מה כרגע נותר לנו זה להריץ את הפקודה
הפקודה היא דקאפ דאטאבס טו דיסק, אז קדימה בואו נרשום את זה, דקאפ דאטאבס שם הדאטאבס טו דיסק שווה לנתיב שטרודל פיין ניין, מצוין רשמנו את הפקודה הרלוונית פר שורה וחברים וחברות אני שמח לבשר שאנחנו מתקדמים יפה ואנחנו כבר כמעט סיימנו מלולאה שלנו, חוץ מזה שאנחנו צריכים
fetch next from dbcursor into name וזהו ובא לציון גואל, אנחנו יכולים לסיים עם הלולאה הווייל שלנו יסתיים כאן ואנחנו יכולים כרגע רק לשחרר את הזיכרון שלנו קלוז דיבי קרסור ודיאלוקייט של דיבי קרסור לשחרר משאבים נדרשים של התוכנית שלנו של הקרסורים ואנחנו כרגע ערוכים ומוכנים להריץ את השאילתא את התוכנית כפי
שהיא מופיעה לפניכם. סימנתי את הקוד F5 אנחנו לא סימנו מספיק ולכן קיבלתי את ההודעת שגיאה, אז בואו נסמן את הכל, ונלחץ שוב פעם F5, והאקזקיוטינג קווירי מראה