הוספת שורות לשתי טבלאות בו זמנית

יום חמישי, דצמבר 1, 2016

פעם כתבתי פוסט על הנושא, בעיקר בתור אתגר; בשם חסכו ואמצו (2).באופן כללי, ניתן לשלוף את השורות שהשתנו (במקרה זה – התווספו) על ידי האופרטור Output,ואם קצת מתחכמים – להפנות את הפלט של ה-Output לטבלה שניה.בערך כך: If Object_ID('B') Is Not Null Drop Table B; If Object_ID('A') Is Not Null Drop Table A; Create Table A(ID Int Identity Primary Key, ...
אין תגובות

סקריפט הפונה למספר דטבייסים

יום שני, אפריל 20, 2015

לכאורה זו אינה משימה מסובכת במיוחד: בסקריפט הפונה למספר דטבייסים ניתן להוסיף למשפטי ה-SQL את שם הדטבייס (נניח-.. Update MyDB..MyTbl Set).כל זה לכאורה, כי יש מספר בעייות עם זה: סקריפטים רגישים (למשל- בהעברה מסביבת פיתוח לסביבה יצורית) אמורים להיות כתובים כך שאם יש תקלה ניתן להריצם שוב, והם ישלימו את החסר מבלי לפגוע במה שאינו. למשל- לא ינסו ליצור מחדש אובייקט שכבר נוצר, או להוסיף לטבלה שורות שכבר התווספו. לא ניתן לבצע פקודות Drop & Create לאובייקטים בדטבייס אחר מהנוכחי. ניתן רק בזה בו נמצאים. כלומר- לא ניתן להריץ פקודות בסגנון של ..Create Proc AnotherDB..P_MyProc As. אם כך,...
אין תגובות

הרצת פקודות דינמיות: Exec מול SP_ExecuteSQL

יום רביעי, אוקטובר 10, 2012

כשמריצים SQL דינמי ניתן לעשות שימוש באחת משתי פרוצדורות המערכת הנ"ל. ה-DBA-ים הוותיקים בוודאי זוכרים במעורפל משהו על כך ש-SP_ExecuteSQL עדיפה מפני שהיא יכולה למחזר Execution Plans, אך מה זה בדיוק אומר ומי מבין השתיים עדיפה ומתי? נפתח ברשימת המצרכים- טבלה עליה נוכל להריץ את הקודים הדינמיים: Use tempdb; Go   If Object_ID('T_Messages','U') Is Not Null Drop Table T_Messages; Go   Select * Into T_Messages From sys.messages; ...
תגובה אחת

שליפת שמות כל הטבלאות בשרת

יום שישי, אפריל 15, 2011

המשימה כשלעצמה לא אמורה להיות מסובכת במיוחד- יוצרים פרוצדורה שעוברת בלולאה על כל הדטבייסים, שולפת את שמות הטבלאות לתוך טבלה זמנית, ולסיום מבצעת Select על הטבלה; אלא שאני משתדל לתת פתרונות שאינם כוללים יצירה של אובייקטים (מה שמצריך הרשאות מיוחדות והתרפסות בפני ה-DBA), ושהשליפה נראית כשליפה- פקודת Select שאפשר לפלטר, למיין, לבצע Join וכו'; ומאז שנגלו לי נפלאות ה-OpenRowSet מתברר שניתן להצפין בתוכו קטעי קוד ולקבל את מבוקשי. נתחיל בקטעי הקוד, ובהמשך נפעיל את ה-OpenRowSet:...
אין תגובות

חסכו ואמצו (2)

יום חמישי, אפריל 7, 2011

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