SQL Server迁移到mySQL,提示&潜在的问题?

时间:2011-09-19 16:27:34

标签: mysql sql-server database sql-server-2008 open-source

我正在研究从SQL Server迁移是否可行。为了帮助我做出这个决定,我有一些问题:

是否可以在MySQL服务器上使用asp.net成员资格?

是否有许多/任何有用的工具来迁移表/数据库/等等哪些是最好的?

从SQL Server迁移到MySQL有哪些主要缺点?

目前我有一个足够大的项目,但它没有利用许多MS功能,所以如果有可能我想移动。

3 个答案:

答案 0 :(得分:1)

我的公司几年前做了一个非常大的项目。对我们来说更容易的事情是我们大多使用非常简单的标准兼容SQL。没有Linq,没有实体框架,只有一点T-SQL,只有少数存储过程。

至于将数据导入MySQL,我们最终创建了自己的工具来实现这一目标。包括“MySQL迁移助手”在内的任何现有东西都不能完全发挥作用。一旦您可以在MySQL上重新创建架构,重新获取数据就可以导出为CSV并使用LOAD DATA INFILE导入。转移架构实际上是最难的部分。有这么多表,我们不能手工完成。我们在.Net中编写了一些代码,开始使用我们找到的this VBScript,并将其升级为使用.Net中可用的“Microsoft.SqlServer.Management”命名空间中的工具。

对于SQL Server中存在但在MySQL中不存在的函数,例如GetDate,在MySQL中编写自己的函数很容易映射到这些函数,而不是试图找到这些函数的所有实例。代码。 MySQL和SQL Server之间存在相当多的语法差异,即使只使用基本SQL也是如此。例如,MSSQL允许DELETE TABLENAME WHERE ....,但MySQL坚持你使用DELETE FROM TABLENAME WHERE .....这只是一个,还有很多其他差​​异。

无论如何,这是一次冒险,但对我们来说效果很好。它是可行的,但你必须承诺,而不是害怕编写自己的迁移工具。

答案 1 :(得分:1)

我的头脑中有很多东西。

MySQL不支持CHECK约束。通常,如果您的dbms 支持CHECK约束,那么您的表将使用它们。

根据约束条件,您可以通过以下方式之一重写它。

  • 作为新表的外键
  • 作为触发器
  • 作为每日(或每小时,无论如何)的异常报告
  • 作为应用程序代码中的模块( 可以成为异常报告的一部分)
  • 我没有想过的其他东西。

MySQL的时间戳分辨率为1秒。

答案 2 :(得分:0)

Microsoft有一个SQL Server迁移助手,但很自然地,它旨在帮助用户向另一个方向移动。

你可能想从MySQL网站查看这份白皮书(你需要注册 - 我没有,所以我不知道这篇文章与你已经拥有的知识相比有多大价值):

http://www.mysql.com/why-mysql/white-papers/mysql_wp_mssql2mysql.php

还有一些产品和指南可以通过相当简单的搜索找到,例如

http://www.spectralcore.com/fullconvert/tutorials/convert-mssql-sql-server-to-mysql.php

http://www.haidongji.com/2009/02/23/moving-data-from-sql-server-to-mysql/

我不知道ASP.NET成员资格可以直接移植到MySQL,但我相信你可以复制它的功能(更多的是它将花费多少努力的问题,而不是它是否可能)。