将数据和架构从MySQL迁移到SQL Server

时间:2010-03-19 05:34:15

标签: mysql sql-server migration

是否有任何免费的解决方案可以自动将数据库从MySQL迁移到“正常工作”的SQL Server服务器?

我一整天都在尝试这个简单(至少我是这么认为)的任务。我试过了:

  1. SQL Server Management Studio的导入数据功能
  2. 创建一个空数据库
  3. 任务 - >导入数据......
  4. 适用于Odbc的.NET Framework数据提供程序
  5. 有效DSN(已验证已连接)
  6. 从一个或多个表格或视图中复制数据
  7. 检查1个非常简单的表
  8. 点击预览
  9. 获取错误:
  10.   

    预览数据不可能   检索。附加信息:   错误[42000] [MySQL] [ODBC 5.1   驱动程序]的[mysqld-45年5月1日社区]你   您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   正确的语法使用附近   第1行的'“table_name”'(myodbc5.dll)

    如果我完成向导的其余部分并执行操作,则会发生类似的错误。失败的步骤是“设置源连接”,错误是指检索列信息,然后列出上述错误。当我修改列映射时,它可以很好地检索列信息,所以我真的不知道问题是什么。

    我还尝试使用各种MySql工具输出SQL Server可以理解但尚未成功的ddl语句。

    我尝试使用MySQL v5.1.11到SQL Server 2005和MySQL v5.1.45到SQL Server 2008(分别使用ODBC驱动程序3.51.27.00和5.01.06.00)

7 个答案:

答案 0 :(得分:3)

Microsoft提供了两个免费工具包。

  1. 用于MySQL v1.0的Microsoft SQL Server迁移助手 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14280

  2. 用于MySQL v5.1的Microsoft SQL Server迁移助手 http://www.microsoft.com/download/en/details.aspx?id=26712

  3. 我只使用了第二个,它对我没有任何故障。 它需要向Microsoft注册才能下载许可证文件。 但它可以免费供所有人使用。

答案 1 :(得分:1)

现在这已经很老了,但如果你使用MySQL Connector NET并在连接字符串中设置SQL Server Mode = true,这将解决你的错误。

答案 2 :(得分:1)

最近,我已成功将 MySQL数据库迁移到MSSQL数据库。以下是详细步骤:

操作系统:带有SQL Server标准的AWS Microsoft Windows Server 2012 R2

使用的工具:

  • SQL Server 2014 Management Studio SQL Developer,
  • 适用于MySQL的Microsoft SQL Server迁移助手v6.0.1,
  • 远程桌面客户端和
  • 第三方MySql ODBC驱动程序5.1.13

<强> 1。设置AWS Windows Server enter image description here

<强> 2。在AWS控制台ec2实例列表中,右键单击Windows服务器并选择connect。你会在下面看到类似的屏幕。  enter image description here

第3。单击远程桌面连接[#4]所需的“获取密码”按钮,然后按照说明操作。

<强> 4。默认情况下,可以在Ubuntu本地计算机上使用远程桌面客户端连接到该EC2 [#1]实例。使用#2。中的凭据 enter image description here

<强> 5。使用远程客户端连接后,您应该能够访问远程MSSQL服务器。安装以下工具。

<强> 6。配置ODBC数据源(64位):

  • 打开管理工具→单击ODBC数据源(64位)和 按照步骤连接到MySQL数据库。

<强> 7。打开SQL Server 2014 Management Studio SQL Developer并使用Windows身份验证进行连接。

  • 为MySql迁移创建目标MSSql数据库。

<强> 8。打开Microsoft SQL Server迁移助手:有关详细信息,请访问此链接:https://blogs.msdn.microsoft.com/ssma/2011/02/07/mysql-to-sql-server-migration-how-to-use-ssma/

  • 创建新项目
  • 连接到MySql
  • 连接到MSSql
  • 转换架构
  • 迁移数据

<强> 8。您可能在此处列出了一些问题。请详细阅读我编写详细决议的地方。 MySql 5.6 to MSSql server 2014 migration : ExecuteReader requires an open and available Connection

答案 3 :(得分:0)

恐怕没有简单的解决办法。 SQL中使用的SQL和SQL Server 200X中使用的T-SQL是SQL的不同方言。它不仅简单地改变说“auto_increment”到“identity”,而且保留了产生问题的单词。 例如

   CREATE TABLE test (
 user varchar(50)
  )

将在MySQL中运行并在SQL Server 2008中失败。 长话短说 - 不幸的是,你需要手工完成。

答案 4 :(得分:0)

  1. 将文件从MySQL导出为CSV文件。
  2. 从MySQL
  3. 导出表的create语句
  4. 惊魂。
    3A。禁用SQL Server中的外键检查
  5. 在SQLserver中调整create语句直到它们工作。
  6. 将CSV文件导入MySQL 5A。在SQL Server中启用外键检查。
  7. 另见这些答案: migrate-from-mysql-to-sql-server-2008

答案 5 :(得分:0)

关于这个错误42000有类似的问题,对我来说,我发现将MySQL全局模式设置为ansi_quotes会解决它:

set global sql_mode=ansi_quotes;

答案 6 :(得分:0)

有商业解决方案,但不是免费解决方案。根据数据库的复杂性,为目标方言重写SQL可能是一项非常简单的任务 - 或者是一项非常困难的任务。 重写CREATE TABLE语句永远不会很难,它可以手工完成,没有任何意外。程序,功能和触发器都存在问题。