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

  • שאלה


  • שלום רב!


    אז יש לי קצת דילמה האמת, עד היום היינו מבצעים בנוסף לגיבויים הרגילים (FULL/DIFF/LOG) גם גיבויים ברמת הסכימה.

    מה הכוונה ל"רמת הסכימה" פשוט מאוד גיבוי של כל המסדי נתונים שלנו לקובץ יצירה של כל DB וDB.

    בעצם עבור כל DB אנחנו רוצים שיהיה לנו סקריפט שיכיל את כל הפקודות DDL של יצירתו וכל האובייקים שנמצאים בו (TABLES/VIEWS/FUNCTIONS/PROCEDURES/ וכו'..)

    למי שלא ירד לסוף דעתי עדיין אז באופן ידני ניתן לעשות את זה בכלות על ידי הSSMS בצורה הזאת למשל :

    GUI


    ואז בעצם ג'ינרטנו את הסקריפט יצירה של כל ה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 מכיל ?


    תודה רבה וחג שמח!


    חיים פישנר.

    יום שישי 05 אוקטובר 2012 12:42

תשובות

  • שלום,

    כל כלי שמבוסס 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
    יום שני 08 אוקטובר 2012 19:50

כל התגובות

  • מה רע ב

    SQLPUBWIZ

    http://sqlhost.codeplex.com/wikipage?title=DPW%20Command%20Line%20Interface

    עדכמה שזכור לי הוא כן עושה את זה.

    בניתי קוד ב VBS שלוקח את כל בסיסי הנתונים ומריץ את ה PUBWIZ עליהם אח"כ ZIP ושולח ב FTP לגיבוי

    ובמידה ורציתי גיבוי DELTA יש לי rdiff.exe  מ Cygwin

    • הוצע כתשובה על-ידי tetitu יום ראשון 07 אוקטובר 2012 08:49
    יום שישי 05 אוקטובר 2012 13:48
  • ב SQL 2012 זה נמצא ב:

    "c:\Program Files (x86)\Microsoft SQL Server\90\Tools\Publishing\1.4\SqlPubWiz.exe"

    ויש שלו פרמטר של -schemaonly

    אני עובד גם בת"א וגם בנתניה על אותו פרויקט ומכיוון שאין לי VPN בין שני המשרדים אני משתמש ב PUBWIZ בשביל להעביר את בסיס הנתונים (כל הנתונים)ממחשב למחשב.

    ואת האמת גם בגיבויים זה יותר אמין לי מגיבוי של ה SQL וגם זה קריא כך שאים אני צריך שחזור של נתון  אחד אני מסתכל ב SCRIPT  ומוציא את הנתון במקום לשחזר את כל בסיס הנתונים

    החיסרון שלו מול גיבוי של SQL זה זמן השיחזור גדול יותר.

    יום ראשון 07 אוקטובר 2012 08:47
  • הי,

    ה-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

    יום שני 08 אוקטובר 2012 06:48
    מנחה דיון
  • שלום,

    כל כלי שמבוסס 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
    יום שני 08 אוקטובר 2012 19:50
  • שלום רב,

    בהמשך לתשובות, לטובת השלמת תמונת הגיבויים אני רוצה להמליץ על כלי בשם 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

    יום רביעי 10 אוקטובר 2012 10:44
  • תודה רבה לכולם!

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

    תודה רבה לכולם ושבוע טוב!


    חיים פישנר.

    יום שני 22 אוקטובר 2012 00:45
  • הוא קיים ב CODEPLEX לגרסה 2005

    אך עקב בעיה של רישיון שימוש מיקרוסופט החזירו אותו לקוד סגור

    וגרסה 2008

    2008R2

    ו 2012 הוא קיים כחלק מההתקנה. וכן זה עובד לי על 2012 ומגיע עם ההתקנה.

    יום שני 22 אוקטובר 2012 08:14