DCSIMG
MySQL SSMA – ייבוא טבלאות מ-MySQL ל-MSSQL - מאחורי המסך

מאחורי המסך

משה למפרט, על תכנות מתקדם וביצועים ב-Web.

על הבלוג

עוד חדשות

אתרים שיש לי בהם יד ורגל

MySQL SSMA – ייבוא טבלאות מ-MySQL ל-MSSQL

מוצר חדש שעלה בשקט בשקט ב-CTP, ומיועד למי שנמצא על קו התפר בין MySQL, פרוייקט הקוד הפתוח הפופולארי לבין SQL Server.

 

image

מדובר בתוכנה קטנטנה ששוקלת רק 11MB על הכונן הקשיח, ודורשת את ה-MySQL ODBC Client שניתן להורדה חינם מאתר MySQL. אותי מפליא מדוע הם לא בחרו פשוט להשתמש ב-Native Provider של MySQL לסביבת .NET Framework., אבל מילא. שיהיה.

הכלי עצמו, לאחר שהותקן בדקה או שתיים, דורש רשיון (הניתן חינם באתר Microsoft) בדומה לכלים דומים (SSMA של Access)  ולאחר שנפתח נראה כמעט זהה לכלי המקביל עבור Access, למעט האשף שעושה את החיים קצת פשוטים יותר. הכלי, אגב, תומך גם בשדרוג ל-SQL Azure שבענן אותו מיקרוסופט דוחפת בכל הכח.

תחילה ניצור פרוייקט חדש:

image

בשלב הבא נתחבר ל-MySQL המקור ול-SQL Server היעד וניתן לתוכנה לנתח את מבנה הנתונים במקור, וגם מציע הצעות לשינויים במקרים של אי תאימות.

כשמדובר בהמרת ה-Schema של הטבלאות הוא עושה עבודה טובה, וממיר היטב גם את האינדקסים המצורפים לטבלה ומסייע (לא בדקתי)להעביר גם את הטריגרים. כמו שאר הכלים מהסדרה הוא תומך בהמרה און ליין וגם ביצירת קובץ SQL.
בנוסף לכך הוא מציג דו"ח מאוד יפה על DB והבעיות הנובעות מהבדלים בין SQL Server ל-MySQL בתחום הטיפול בתאריכים ואחרים, וכותב בסוגריים הערכת זמן לטיפול בבעיה.


בשלב הבא ניסיתי להמיר דרכו מסד נתונים של 3GB עליו מבוססת אפליקציית Web, הוא טען שהצליח, אולם כשניסיתי להעביר את המידע הוא טען כי ההמרה נכשלה.
בדיקה ב-Management Studio לא הראתה שום זכר לטבלאות שהיו אמורות להיווצר. ייצוא ידני של ה-SQL  שהוא הציע ליצור והרצה ידנית ב-Management Studio עבר חלק.

הליך העתקת המידע מורכב מעט ודורש הכרות פנימית עם מבנה הנתונים ועם MySQL ו-SQL Server באופן כללי. עם זאת – מרגע שהכל הוגדר כשורה, למעט חריגים - אין בעיות או הפתעות מיוחדות (חוץ מתאריכי האפס). העתקת המידע מתבצעת בד"כ ב"פרוסות" של כ-10,000  רשומות בפעולה, בתלות בנפח ובגודל הטבלה והזיכרון בשרת המקור והיעד.

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

 image

המסך הראשי של התוכנה. בצ"מ נמחקו פרטי הטבלאות.

בעז"ה מתישהו – על MySQL בסביבת .NET: רגישויות, ביצועים ועוד ועוד. ואולי גם הדרך ההפוכה – המרה מטבלאות של SQL Server לאלו של MySQL.

פורסם: Jan 20 2010, 11:16 PM by Moshe L | with no comments