Jump to content

BlackTrack

  • entries
    93
  • comments
    279
  • views
    24381

MySQL migration to Microsoft SQL Server 2008 Express Edition


Blackman

597 views

 Share

Πρόσφατα ένας φίλος με ρώτησε, πως θα μπορούσε να μεταφέρει μία βάση που είχε στημένη σε MySQL, σε μία βάση SQL Server 2008 Express Edition.

SQL_Header_grid_2008.png

Στην αναζήτηση μου για να βρω λύση στο πρόβλημα του φίλου, θυμόμουν μία διαδικασία integration που μπορείτε να βρείτε στο technet της Microsoft ΕΔΩ.

logo-mysql.jpg

Το μοναδικό πρόβλημα στην περίπτωση μας, είναι ότι μιλάμε για SQL 2008. Στην παραπάνω διαδικασία μιλάει για την χρησιμοποίηση του Data Transformation Services (DTS) για να μπορέσει να ολοκληρωθεί το migration, πράγμα που δεν υπάρχει στην περίπτωση του SQL server 2008 (και του SQL 2005 φυσικά). Οπότε ξεκίνησα το ψάξιμο για να δω αν μπορώ να βρω κάτι για να ξεπεράσουμε την όλη διαδικασία και να ολοκληρωθεί το Migration (που σε όλα τα άλλα βήματα, προχώρησε χωρίς πρόβλημα, όπως περιγράφει και η MS).

Τελικά το αντίστοιχο tool λέγεται SQL Server Integration Services (SSIS), αλλά δεν υπάρχει στην Express έκδοση του SQL. Η λύση είναι η εξής:

Από το σύστημα που έχουμε εγκατεστημένη την SQL 2008 Express edition πηγαίνετε στην σελίδα http://dev.mysql.com/downloads/connector/odbc/5.1.html και κατεβάζετε τον σχετικό ODBC driver για την MySQL (έκδοση 5.1 στην περίπτωση μας) και στην συνέχεια  χρησιμοποιούμε το παραπάνω για να δημιουργήσουμε ένα Linked Server στον αρχικό MySQL Server που θέλουμε να κάνουμε Migrate. Στην συνέχεια τρέχουμε ένα query το οποίο θα κάνει copy την βάση, πίνακα με πίνακα και το οποίο είναι το εξής:

(φυσικά αντίστοιχα γράφετε τον όνομα του server σας, της σχετικής βάσης και τα κλασικά username & password)

EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=127.0.0.1; DATABASE=Db_NAME; USER=myusername; PASSWORD=mypass; OPTION=3'

και για να γίνει το copy για ένα πίνακα

select * into MSSQL_DB_Name.dbo.TableName

from openquery(MySQL, 'select * from Db_Name.TableName')

και έτσι ολοκληρώνετε το migration, προχωρώντας και στους υπόλοιπους πίνακες. Φυσικά το παραπάνω ισχύει και στην περίπτωση SQL 2005 Και λογικά δεν θα έχετε πρόβλημα να το τρέξετε και σε άλλη έκδοση πέραν της Express, αλλά αυτό δεν το έχω δοκιμάσει.

Νομίζω ότι το παραπάνω είναι πολύ χρήσιμο να το γνωρίζετε ότι γίνεται. Έτσι μπορεί να γίνει Migration μίας βάσης από MySQL είτε αυτή είναι σε κάποιο Open Source σύστημα είτε σε κάποιο άλλο.

DOWNLOADS

SQL Server 2008 Express Edition

MySQL ODBC driver

SQL Server 2005 Express Edition

 Share

2 Comments


Recommended Comments

George, θα έλεγα με σιγουριά ότι ο διάδοχος της MSDE είναι η Windows Internal Database (τη θυμάστε απο το WSUS??).

Η SQL Express Edition ανεβαίνει αρκετά βήματα πιο πάνω, μιας που είναι διαχειρίσιμη μέσω του Management Studio και έχει μεγαλύτερο file size περιορισμό σε σχέση με την MSDE.

Link to comment

χμ...ναι νομίζω ότι τώρα που το αναφέρεις έχεις δίκιο.

απλά μου είχε μείνει στο μυαλό αυτό που έγραψα...

 

θα το διορθώσω

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...