שירשור סקריפטים

28/09/2010

אין תגובות

הנה טיפ שימושי: מדובר בפקודת Dos ותיקה ומוכרת, שהפעם נעשה בה שימוש לטובת DBA-ים של SQL Server.
בתהליך הפיתוח אנחנו יוצרים אובייקטים (טבלאות, פרוצדורות..), מכניסים ערכים לטבלאות הגדרות וניהול וכו'. כל פעולה כזו נשמרת בסקריפט נפרד, וכשמעלים גרסה משרת הפיתוח לשרת הבדיקות – יוצרים מהסקריפטים הרלוונטיים סקריפט אחד ארוך שכולל את כולם לפי סדר הגיוני.

נניח שהסקריפט הראשון כלל יצירת טבלה ונשמר בתור C:\Tmp\A.sql

Use tempdb;

Go

Create Table MyTbl(Taarih DateTime);

Go

הסקריפט השני כלל הוספת שורה לטבלה הנ"ל ונשמר בתור C:\Tmp\B.sql

Use tempdb;

Go

Insert MyTbl Select GetDate();

Go

והסקריפט השלישי כלל הוספת עמודת Identity לטבלה ונשמר בתור C:\Tmp\C.sql

Use tempdb;

Go

Alter Table MyTbl Add ID Int Identity Primary Key;

Go

כעת בעזרת פקודת Copy פשוטה שניתן להפעיל על ידי xp_CmdShell ניצור משלושת הקבצים הנ"ל קובץ אחד בשם ABC.sql

Exec xp_CmdShell 'Copy C:\Tmp\A.sql+C:\Tmp\B.sql+C:\Tmp\C.sql C:\Tmp\ABC.sql';

Go

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

Exec xp_CmdShell 'Copy C:\Tmp\*.sql C:\Tmp\ABC.sql';

Go

הערה: כששומרים את הקבצים A.sql, B.sql, C.sql יש לוודא שיש שורה ריקה לאחר הפקודה האחרונה בקובץ; כי אם לא – ה-Go שמסיים את A.txt יהיה מחובר ל-Use שפותח את B.txt וזה יגרום לשגיאה בהרצה.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *