דילוג לתוכן הראשי

Differences between a DACPAC and a BACPAC

שלום לכולם

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

כלומר ישנן אפשרויות רבות להעברות של בסיסי נתונים או חלקים מהם – כולם נכנסים תחת המטריה הנקראית -

Data-Tier Applications.

כל אחד יכול להשתמש בצורה שונה, לפי צרכיו ויש מאמרים רבים ברשת כיצד ליצור חבילה (אפשר מתוך SSMS 2008 או SSMS 2012, אפשר מתוך VS2010 באמצעות SSDT, אפשר מתוך הפורטל של ה SQL Azure).

אני רוצה להתמקד בשימוש ובאפשרות של מיגרציה לענן של בסיס נתונים:

עומדים על בסיס נתונים ב SSMS 2012 ואלו האפשרויות שקיימות:

לוחצים מקש ימין על בסיס נתוניםואז לוחצים על Tasks ואז אני רוצה לדבר על הריבוע המסומן למטה בקיצור ועל המסומן בצהוב בפירוט

הקישור המרכזי במיקרוסופט הוא: Data-tier Applications

image

  • Extract Data-tier Application – זו פעולה שמייצרת DACPAC, שזה חבילה המכילה רק סכמה של בסיס הנתונים. חבילה פירושה קובץ. ואז אתה הולך למקום אליו אתה רוצה לבנות את הסכמה עומד על בסיס הנתונים – מקש ימין ולוחץ על Deploy Data-tier Application ואז יש וויזרד שבעצם בונה בסיס נתונים זהה עם סכמה בלבד. ואם אתה עובד דרך הפורטל של Azure גם משם אפשר לייבא או לייצא חבילות
  • Deploy DataBase to SQL Azure – על ארחיב בהמשך כולל תמונות
  • Export Data-tier Application – זו פעולה שמייצרת BACPAC שזה חבילה המכילה גם סכמה של בסיס הנתונים וגם נתונים. חבילה פירושה קובץ. ואז אתה הולך למקום אליו אתה רוצה לבנות את בסיס הנתונים עומד על בסיס הנתונים – מקש ימין ולוחץ על Import Data-tier Application ואז יש וויזרד שבעצם בונה בסיס נתונים זהה .

כמו שרואים בתמונה :

SNAGHTML4f1778e6

כן רבותיי גם BACPAC וגם DACPAC מקלים על החיים – החסרונות הם שבבסיסים גדולים יש תעופות ובבסיסים מורכבים עם לוגאינים מסויימים הדברים לא עוברים חלק.

  • Register as  Data-tier Application – שלושת הפעולות הבאות קשורות קשר אמיץ – מדובר ברישום של מצב בסיס נתונים – ועל כך יש להרחיב הרבה ולא זה המקום…..
  • Upgrade Data-tier Application – זה השלב השני שיוצרים חבילה של עידכונים ואתה מעלים או מריצים היכן שרוצים לשדרג גירסה
  • Delete Data-tier Application – מוחקים חבילה מבסיס נתונים

ועכשיו לסקשין של Deploy DataBase to SQL Azure דבר ראשון ולפני הכל חייבים לוודא שגודל בסיס הנתונים שאתה מתכנן להעביר מתאים להגבלת הגודל ב SQL AZURE כי אחרת תהיה שגיאה ללא פרטים – אם בסיס הנתונים שלך שוקל 1.5GB אל תנסה להעלות אותו ל SQLAzure המוגבל ל 1GB.

מקש ימין ולחיצה על Deploy DataBase to SQL Azure  נותנת לנו את המסך הבא:

image

עכשיו אם אנו רוצים להעלות לענן – מה הוא מייצר? BACPAC או DACPAC? יפה 2 נקודות.. כמובן ש BACPAC כי הוא אמור להעלות הכל כולל הכל.

ואז נפתח החלון הבא, בו ממלאים את פרטי חשבון הענן:

image

 

עמוד סיכום של מה שמבצע

image

התקדמות:

image

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

image

 

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

image

והנה בסיס הנתונים בענן עצמו

 

image

 

אז – מיקרוסופט עשו עבודה טובה והקלו את החיים עלינו וכדאי ואפשר להשתמש במבחר האפרויות שכלים אלו נותנים לנו..

ולשאלת השאלות איך נדע ונזכור ש DACPAC זה רק סכמה ואילו BACPAC זה גם נתונים?

שמעתי את אנשי מיקרוסופט מתבדחים ואומרים ש BACPAC מזכיר להם שלוקחים חבילה על הגב… והיא הרבה יותר כבדה…ומעתה אמור

BACPAC כבד לי על הגב…

מזל שהם לא היו בגולני.

יום נעים

תגובות

פוסטים פופולריים מהבלוג הזה

ועוד קצת על ניהול פיתוח לענן

היום עקב תקלה קטנה מול מיקרוסופט בוצע disable לחשבון. הדבר גרם לאתר לא לעבוד וכמובן 3 רולים נוטרלו. כשחזרו לחיים נדרשנו לעשות מחדש deploy ל 3 הרולים. (רוצים הסבר קטן לעבודה על הענן? ובכן תמצית הדבר הוא שכשאנו עוקפים נהלים שאנו יצרנו בשרתים שלנו מיקרוסופט - לא מרשים לעקוף וכך הכל חייב להתנהל לפי הספר... מה שתעלה לענן זה מה שירוץ ואם תשנה - השינויים יימחקו...) הבעיה החלה כאשר הסתבר שלא כל קבצי ה deploy נשמרו על מכונת הגירסה וכי אחד הקבצים שודרג לגירסא חדשה שטרם עלתה לענן.... הדבר גזל 4 שעות בנסיון להחזיר את הגירסה... מסקנתי היא כי חייב להיות נוהל שמירת קבצי deploy מיד אחרי העלתם לענן - ובכך לשמור גיבוי לעת צרה - נכון - אל תצעקו עליי - בוצע לייבל ב TFS - ואפשר למשוך ולקמפל - אבל תראו לי עובד אחד שעשה את זה תוך חמש דקות....? יש לציין לטובה את ה SQL Azure - שלו - לא קרה כלום כל העת... כל הכבוד ל SQL... ובנימה יותצר רצינית - אל תשכחו לגבות כל מה שעולה ... - במיוחד אצלך . אגב בענן עצמו - זה כבר יגובה אל דאגה... ערב טוב

על בעיות של ניהול פיתוח לענן

על ניהול סביבת פיתוח מול הענן:   הבעיה המרכזית בניהול פיתוח לענן שייכת לתחום הבדיקות  - שום ענן מקומי ושם אימולטור אינו מדמה במאה אחוזים את מה שקורה בענן עצמו. בכל רכיבי הבדיקות, על בעיה זו ניתן להתגבר בשיטת עבודה טובה והקמת מערכת בדיקות בענן עצמו. על ניהול גרסאות מול הענן:    במידה ואתם עובדים מול לקוחות רגילים ומול לקוחות הרוצים מוצרים בענן  - מהי הדרך הטובה ביותר לנהל את הפיתוח כך שאפשר יהיה לתחזק את שתי המערכות ואת שתי סביבות הבדיקות? אפשר לומר כי מטרת מנהל הפיתוח היא להקים סביבת פיתוח אחת - אם הדבר לא אפשרי צריך למצוא את הפתרון לסינכרון 2 הסביבות. Check List -   למנהל המבולבל - מה הצוות צריך לבצע לפני העלאה לענן: על הפרוייקט להיות מקומפל בסביבת VS2010 - רצוי 64 Bits ולא 32. יש להריץ בענן מקומי (אימולטור) ולראות שהכול עובד כהלכה במידה ואתה משתמש ב Registery או ב Event Log עליך ליצור קובץ StartUp command שבעצם ירוץ בעליית ה Role וייצור את מה שצריך במחשב המיועד לך בענן. יש ליצור חבילה להעלאה - רצוי לשמור חבילה זו עם מספר ותיאור כללי. יש להעלות את החבילה ולבדוק שהכול רץ ועו

Azure SQL DB tiers comparison

Hi All In the last few month Brent Ozar gae us 2 masterpiece blogs related to Azure SQL DB:   How fast can a $21,468/mo Azure SQL DB load data?     In this blog Brent compared the abilities of Azure SQL DBs to load Data - he compared all combinations of vCors tiers. (When I asked him about comparing the Standard\Premium tiers, he told me to do it.... :-) )   There’s a bottleneck in Azure SQL DB storage throughput.   In this blog Brent showed us that in the vCors world the storage throughput has limit and there is not need to pay so much money when you need to upload lots of data.   So I took have taken up his challenge and done a comparison in Azure SQL DB in Standard\Premium tiers. I have created a new DB with 1 Table. I have generated 7 GB of DATA, and created the file in my local on premise drive (Yes, do not kill me, I did not had the time to put it on azure), and uploaded it via BCP command.   bcp "TableName" in "T:\MyTable.bcp"