Introduction
This article describes a
few simple steps in order to migrate
MySQL into Microsoft SQL Server 2005.
The technique is very easy, but useful
if you plan to move your data from MySQL
and upgrade it finally to a Microsoft
SQL Server environment.
Background
Initially, I started my
search for an article on CodeProject
regarding MySQL->MS
SQL migration without any
success. I had an old PHPbb forum
running, that needed to be upgraded to a
Microsoft environment entirely. I could
have just kept MySQL and Apache server,
but instead I decided to migrate the
entire concept of PHPbb to a
YAF-forum.
Setup ODBC Connection to
MySQL Database
This article will not go
through how to setup a MySQL or
Microsoft SQL server, but make sure you
have downloaded at least the
MySQL ODBC Connector
from
here.
For this article, I
downloaded the MySQL ODBC Connector 5.1.
The setup of this connector
is pretty simple:
- Open your ODBC Data
Source Administrator from the
Control Panel ->
Administrative Tools.
Under the tab labelled as "System
DSN", press the "Add" button.

- On the "Create New
Data Source" dialog that appeared,
choose MySQL ODBC 5.1 Driver and
then press the "Finish" button.

- After that, a MySQL
connection configuration dialog will
appear. Add your MySQL database
account information in it,
preferably the "root" account which
has full access to your databases in
MySQL. In this case, my database is
called "
tigerdb
".
Do not change the port to anything
other than 3306, unless during your
MySQL server installation, you have
defined something else.

- Press the "Test"
button to ensure your connection
settings are set properly and then
the "OK" button when you're done.
Create a Microsoft SQL
Link to your MySQL Database
In this state, you are
ready to establish a link towards MySQL
database from your Microsoft SQL Server
Management Studio. Open a query window
and run the following SQL statement:
Collapse |
Copy Code
EXEC master.dbo.sp_addlinkedserver
@server = N'MYSQL',
@srvproduct=N'MySQL',
@provider=N'MSDASQL',
@provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; _
DATABASE=tigerdb; USER=root; PASSWORD=hejsan; OPTION=3'
This script will produce a
link to your MySQL database through the
ODBC connection you just created in the
previous stage of this article. The link
will appear in the Microsoft SQL Server
Management Studio like this:

If it doesn't show up in
the treeview
,
press the refresh button.
Import Data between the
Databases
Create a new database in
Microsoft SQL Server. I called mine "testMySQL
".
In the query window, run the following
SQL statement to import table shoutbox
from the MySQL database
tigerdb
, into the newly created
database in Microsoft SQL called
testMySQL
.
Collapse |
Copy Code
SELECT * INTO testMySQL.dbo.shoutbox
FROM openquery(MYSQL, 'SELECT * FROM tigerdb.shoutbox')
That's it!
Points of Interest
During this migration, I
had to import lately my newly migrated
database into the structure of "Yet
Another Forum" tables. For that, I used
a series of SQL-scripts. However I am
not going to post them here. If folks
leave comments here about the need for
these scripts, just tell me and I will
gladly change this article and start
adding them. You're welcome to post your
comments.
Another issue you will most
likely encounter are the differences
between these two databases based on
datatypes. I would suggest to proceed
with a reverse engineering of your MySQL
database (for example, Visio is one
application that provides reverse
engineering functionality) and start
mapping all the differences and
potential risks of losing parts of data
for instance, within
varchar
columns.
Microsoft SQL datatypes:
http://msdn.microsoft.com/en-us/library/aa258271.aspx
MySQL datatypes:
http://dev.mysql.com/tech-resources/articles/visual-basic-datatypes.html
History