代码之家  ›  专栏  ›  技术社区  ›  colithium

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

  •  4
  • colithium  · 技术社区  · 16 年前

    有没有免费的解决方案可以自动将数据库从MySQL迁移到“刚刚工作”的SQL Server服务器?

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

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

    预览数据不能 恢复。其他信息: 错误[42000][mysql][odbc 5.1 司机][mysqld-5.1.45-社区]你 SQL语法有错误; 检查对应的手册 您的mysql服务器版本 使用near的正确语法 '第1行的'table_name'(myodc5.dll)

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

    我还尝试使用各种MySQL工具来输出SQL Server理解但尚未成功的DDL语句。

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

    7 回复  |  直到 10 年前
        1
  •  3
  •   air4x    14 年前

    微软提供了两个免费工具包。

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

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

    我只使用了第二个,它对我没有任何影响。 它需要在Microsoft注册才能下载许可证文件。 但它对每个人都是免费的。

        2
  •  1
  •   therealmitchconnors    13 年前

    这现在真的很旧了,但是如果使用mysql connector net并设置 SQL Server Mode =true在连接字符串中,这将解决您的错误。

        3
  •  1
  •   Community Mohan Dere    9 年前

    最近,我成功地迁移了 MySQL数据库到MSSQL数据库 . 具体步骤如下:

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

    使用的工具:

    • SQL Server 2014 Management Studio SQL开发人员,
    • 用于MySQL的Microsoft SQL Server迁移助手V6.0.1,
    • 远程桌面客户端,以及
    • 第三方mysql-odbc驱动程序5.1.13

    1。安装AWS Windows服务器 enter image description here

    2。从AWS控制台EC2实例列表中,右键单击Windows服务器并选择连接。您将看到下面类似的屏幕。 enter image description here

    三。单击远程桌面连接所需的“获取密码”按钮,然后按照说明进行操作。

    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

        4
  •  0
  •   Pavel Nefyodov    15 年前

    恐怕没有简单的解决办法。MySQL中使用的SQL和SQL Server 200x中使用的T-SQL是SQL的不同方言。不仅简单地将“auto-increment”改为“identity”,而且保留字也会造成问题。 例如

       CREATE TABLE test (
     user varchar(50)
      )
    

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

        5
  •  0
  •   Community Mohan Dere    9 年前
    1. 将文件从mysql导出到csv文件。
    2. 从mysql中导出表的create语句
    3. 哭。
      3a.禁用SQL Server中的外键检查
    4. 调整SQLServer中的create语句,直到它们工作为止。
    5. 将csv文件导入mysql。
      5a.在SQL Server中启用外键检查。

    另请参见以下答案: migrate-from-mysql-to-sql-server-2008

        6
  •  0
  •   yankygo    14 年前

    对于这个错误42000有类似的问题,对于我来说,我发现将mysql全局模式设置为ansi-quotes可以解决这个问题:

    set global sql_mode=ansi_quotes;
    
        7
  •  0
  •   user2664411    12 年前

    有商业解决方案,但不是免费解决方案。根据数据库的复杂性,为目标方言重写SQL可能是一项微不足道的任务,也可能是一项非常困难的任务。 重写create table语句从来都不是一件困难的事情,它可以手工完成,不会有任何意外。过程、函数和触发器是有问题的。