משיב מוביל
גיבויי סכמה / סקריפטים של יצירת האובייקטים.

שאלה
-
שלום רב!
אז יש לי קצת דילמה האמת, עד היום היינו מבצעים בנוסף לגיבויים הרגילים (FULL/DIFF/LOG) גם גיבויים ברמת הסכימה.
מה הכוונה ל"רמת הסכימה" פשוט מאוד גיבוי של כל המסדי נתונים שלנו לקובץ יצירה של כל DB וDB.
בעצם עבור כל DB אנחנו רוצים שיהיה לנו סקריפט שיכיל את כל הפקודות DDL של יצירתו וכל האובייקים שנמצאים בו (TABLES/VIEWS/FUNCTIONS/PROCEDURES/ וכו'..)
למי שלא ירד לסוף דעתי עדיין אז באופן ידני ניתן לעשות את זה בכלות על ידי הSSMS בצורה הזאת למשל :
ואז בעצם ג'ינרטנו את הסקריפט יצירה של כל הDB והאובייקים בתוכו.
הבעייתיות בצורה הזאת היא שהיא היינה ידנית וכאשר נרצה לבצע אותה בצורה שוטפת פעם בX זמן על מספר רב של שרתים / DB זאת בטוח אינה הדרך.
אז מה שנכון להיום היינו מבצעים זה שימוש בקובץ EXE של VS2010 שבעצם היה מוציא לנו את הפלט.
הבעיה היא שהוא כבר אינו נתמך על SQL בגרסאת 2012 ולכן אנחנו צריכים למצוא אלטרנטיבה.
השאלה אם למישהו יש רעיון :) ?
כרגע בנינו פשוט "תוכנית" פשוטה בC# שבעצם משתמשת באובייקטים בSMO ומג'נרטת לנו את מה שאנחנו צריכים.
בדומה לאיך שמסביר הבחור כאן -
http://blogs.microsoft.co.il/blogs/nayatech/archive/2012/08/08/smo.aspx
הבעיה היא שזה לא מג'נרט את האובייקטים על פי התלויות שלהן בDB וכל אובייקט אנחנו מייצרים בנפרד (טבלאות ואז אינדקסים ואז VIEWS ואז פרוצדורות וכך הלאה..)
ובמידה ויש טבלה או VIEW שתלויים בטבלה אחרת אין זה מחייב בכלל שהדבר יווצר על פי התלות.
משום מה אני בטוח שכבר מישהו מצא משהו קיים באינטרנט כי סכ"ה זה נשמע לי משהו שהוא לא יותר מידיי מסובך ויחסית כן שימושי ונותן קשירות גובהה יותר לארגון.
מישהו ראה סקריפט כזה במקרה ?
אוקיי אחרי שהבהרתי את הרעיון רציתי לשאול האם למישהו יצא להתעסק עם תחזוקת גיבויים כזאת ובמידה וכן כיצד?
לגבי הSMO האם מישהו מכיר משהו מוכן או לא מוכן אבל כיוון נכון יותר לכיצד ניתן לג'נרט DB מסויים על פי התלויות שבו ושיכיל את כל האובייקטים שהDB מכיל ?
תודה רבה וחג שמח!
חיים פישנר.
תשובות
-
שלום,
כל כלי שמבוסס SMO (כולל SSMS ) לא יעבוד באופן שקוף עם החלפת גרסה - כיוון שנעשים שינויים באובייקטים של SMO בין גרסאות של SQL Server
יש ב SSIS כלי שמאפשר העברת אובייקטים בין שרת לשרת שקוראים לו Transfer SQL Server objects
יש שם אפשרות להעביר את ה Database ללא data ועם אובייקטים - וכמובן שהוא גם מבוסס SMO )-;
כפתרון לבעיה שלך תוכל לההעביר את הסכמה ושאר האובייקטים בג'וב שמפעיל את SSIS package
מקווה שעזרתי,
נועם- הוצע כתשובה על-ידי Itai Binyamin יום שלישי 09 אוקטובר 2012 08:38
- סומן כתשובה על-ידי Eran Sharvit יום חמישי 11 אוקטובר 2012 15:39
כל התגובות
-
מה רע ב
SQLPUBWIZ
http://sqlhost.codeplex.com/wikipage?title=DPW%20Command%20Line%20Interface
עדכמה שזכור לי הוא כן עושה את זה.
בניתי קוד ב VBS שלוקח את כל בסיסי הנתונים ומריץ את ה PUBWIZ עליהם אח"כ ZIP ושולח ב FTP לגיבוי
ובמידה ורציתי גיבוי DELTA יש לי rdiff.exe מ Cygwin
- הוצע כתשובה על-ידי tetitu יום ראשון 07 אוקטובר 2012 08:49
-
ב SQL 2012 זה נמצא ב:
"c:\Program Files (x86)\Microsoft SQL Server\90\Tools\Publishing\1.4\SqlPubWiz.exe"
ויש שלו פרמטר של -schemaonly
אני עובד גם בת"א וגם בנתניה על אותו פרויקט ומכיוון שאין לי VPN בין שני המשרדים אני משתמש ב PUBWIZ בשביל להעביר את בסיס הנתונים (כל הנתונים)ממחשב למחשב.
ואת האמת גם בגיבויים זה יותר אמין לי מגיבוי של ה SQL וגם זה קריא כך שאים אני צריך שחזור של נתון אחד אני מסתכל ב SCRIPT ומוציא את הנתון במקום לשחזר את כל בסיס הנתונים
החיסרון שלו מול גיבוי של SQL זה זמן השיחזור גדול יותר.
-
הי,
ה-SQLPUBWIZ הוא כלי ישן ונחמד, והוא עובד לא רע על SQL Server 2005. אני לא בטוח שהוא עובד על SQL Server 2008, ובטח שלא על SQL Server 2012 (לא ניסיתי).
חיסרון נוסף שלו הוא שהוא לא מגבה את כל סוגי האוביקטים, כמו למשל אוביקטים של Service Broker. בהמשך להערה הקודמת, גם אם הוא עובד על גירסאות מתקדמות יותר, הוא לא מגבה סוגי אוביקטים חדשים, כמו Sequence.
פישנר, אתה יכול לנסות להשתמש בכלים אחרים שעושים Schema Compare ושיש להם API, כמו הכלי של Red Gate, למשל. אבל אני חושב שהפתרון שלך צריך להיות מבוסס על SSDT. לא הספקתי לבדוק עדיין, אבל אני בטוח של-SSDT יש API כזה או אחר לבצע את ה-Schema Compare, והוא עושה את זה הכי טוב, לפי דעתי.
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il -
שלום,
כל כלי שמבוסס SMO (כולל SSMS ) לא יעבוד באופן שקוף עם החלפת גרסה - כיוון שנעשים שינויים באובייקטים של SMO בין גרסאות של SQL Server
יש ב SSIS כלי שמאפשר העברת אובייקטים בין שרת לשרת שקוראים לו Transfer SQL Server objects
יש שם אפשרות להעביר את ה Database ללא data ועם אובייקטים - וכמובן שהוא גם מבוסס SMO )-;
כפתרון לבעיה שלך תוכל לההעביר את הסכמה ושאר האובייקטים בג'וב שמפעיל את SSIS package
מקווה שעזרתי,
נועם- הוצע כתשובה על-ידי Itai Binyamin יום שלישי 09 אוקטובר 2012 08:38
- סומן כתשובה על-ידי Eran Sharvit יום חמישי 11 אוקטובר 2012 15:39
-
שלום רב,
בהמשך לתשובות, לטובת השלמת תמונת הגיבויים אני רוצה להמליץ על כלי בשם Script SQL Server Configuration.
הכלי יכול לגבות:
- Logins - These are scripted with the proper SID and the hashed password.
- Jobs
- Linked servers
- Audits
- Alerts
- Credentials
- Proxy Accounts
- Database Mail
- Event Notifications
- User-Defined Endpoints
לפרטים נוספים:
http://scriptsqlconfig.codeplex.com/
Best Regards,
Itai Binyamin, MVP
SQL Server Group Manager
Veracity Group
www.Veracity-Group.com
www.ItaiBinyamin.Blogspot.com -
-