SQL Server 的 mysqldump 等效项

Posted

技术标签:

【中文标题】SQL Server 的 mysqldump 等效项【英文标题】:mysqldump equivalent for SQL Server 【发布时间】:2010-09-10 06:07:36 【问题描述】:

SQL Server 是否有与带有 mysqldump 的 MySQL 等效的架构和数据导出/转储工具。试图重新定位一个旧的 ASP 站点,我对在 Windows 服务器上工作感到不满意。

注意:DTS 导出实用程序自己的似乎导出数据,没有表定义。 使用企业管理器和导出数据库更接近导出架构和数据...但仍然错过存储过程。

基本上是在寻找一个可以一次性满足我所有需求的解决方案。

【问题讨论】:

请重新考虑您选择的正确答案。引用 amScript 的答案是最能回答您的实际问题的答案。您标记为正确的答案仅提供了一种解决方法;通过谷歌搜索找到您的问题的人不会发现该答案很有用。 【参考方案1】:

嗯,Mysqldump 是一系列 SQL 语句。您可以使用 DTS 做到这一点,但为什么不直接在您的新机器上创建一个备份并恢复它呢?

如果您想通过 SQL 执行此操作: http://msdn.microsoft.com/en-us/library/aa225964(SQL.80).aspx

或者只需右键单击数据库并点击任务 -> 备份 (http://msdn.microsoft.com/en-us/library/ms187510.aspx)

【讨论】:

我想问题在于弄清楚新服务对格式的期望......我们正在将网站及其数据库从专用的 win 服务器转移到共享托管服务提供商和最近的我可以通过plesk获取。 第一个 mysqldump 是一个命令。 DTS 你点击。你不能自动化它。 2nd 备份命令写入服务器硬盘。第三次点击很难自动化【参考方案2】:

最简单的方法是备份和恢复或分离和附加

或者用脚本把所有的表和 BCP 输出数据然后 BCP 在新服务器上的数据中

或使用 DTS/SSIS 来执行此操作

【讨论】:

【参考方案3】:

SQL 企业管理器或 SQL Server 管理工作室具有基于向导的方法,后者将生成脚本,以便您了解它是如何完成的。

您还可以使用 BACKUP 和 RESTORE 命令。更多细节在这里:http://msdn.microsoft.com/en-us/library/ms189826.aspx

【讨论】:

【参考方案4】:

如果您可以让 DTS 或集成服务连接到两台服务器,则可以使用向导将对象从一台服务器“复制”到另一台服务器。 “复制数据库”要求两台服务器可以相互进行身份验证,这通常意味着位于同一域中并且服务在域登录下运行。

否则,您可以为架构生成脚本,并且可以使用集成服务/DTS 包将数据导出到文件,然后在另一个文件中导入。

我们现在一般使用SQL Compare 和SQL Data Compare。 Red Gate 的SQL Packager 也可能是一个选择。

【讨论】:

【参考方案5】:

移动数据库最简单的方法是使用 SQL Server Management Studio 将数据库导出到另一台服务器,或者如果这不起作用,请按照其他人的建议进行备份并在其他地方恢复。

如果您正在寻找一种将表结构转储到 SQL 以及为数据创建插入脚本的方法,一个不错的免费选择是使用来自http://www.asql.biz/en/Download2005.aspx 的 amScript 和 amInsert。

如果您想要一个好的付费版本,我会查看 Red-Gate SQL Compare 和 Red-Gate SQL-Data Compare。但是,如果您不打算大量使用它们,这些工具可能有点矫枉过正,而且可能有点贵。我认为它将主要归咎于 DBA。您可以在 http://www.red-gate.com/ 查看 Red-Gate 工具。

【讨论】:

作为问题标题的答案,amScript/amInsert 工具正是我想要的。 +1 使用这两种工具,您无法在加载数据库之前按模式过滤。使用 amScript,150 000 个表在 30 秒内被加载。 amInsert 的行为方式不同,无法加载这些表。 amScript 网站已关闭,我无法通过 Google 找到此实用程序。 GitHub 上有几个用于 mssql 的 beta 阶段命令行替代方案,但我还没有看到任何改进。【参考方案6】:

最简单的方法是 sql server 数据库发布向导。

开源 免费 完全符合您的要求 由微软开发

它没有mysqldump的所有功能,但已经足够接近了。

http://www.codeplex.com/sqlhost/wiki/view.aspx?title=database%20publishing%20wizard

【讨论】:

如何运行它?他们的下载不包含我可以运行的任何 EXE 文件,也不包含我可以在 Visual Studio 中打开的任何 SLN 或 CSPROJ 文件。此外,我注意到大量 cmets 寻求有关如何使用它的帮助。我得到的印象是,这是有史以来最糟糕的垃圾! 它甚至不接近 mysqldump ! Web 发布向导不适用于 SQL Server 2008。另一张海报是对的,它甚至比不上 mysqldump。我仍在为 SQL Server 寻找一个很好的实用程序,它甚至可以完成 mysqldump 的部分功能。 其实支持Sql Server 2008就好了。是的,它不如 mysqldump 强大,但如果它具有您需要的所有功能,那么谁在乎呢?上面的链接已过时,当前版本类似于 1.4 或 1.5 @RobertIvanc 当时和迄今为止,令人沮丧的是没有现成的命令行/可编写脚本的 exe,但这是我能找到的最直接的选择。不幸的是,它有效。【参考方案7】:

使用 SMO API 更简单。它可以让你做的和 mysqldump 完全一样,甚至更好。这是一个代码示例:

http://samyem.blogspot.com/2010/01/automate-sql-dumps-for-sqlserver.html

【讨论】:

【参考方案8】:

备份/恢复不会做的两件事:

    离开 Microsoft 服务器,该服务器 是原始问题的一部分 帮助快速找到结构差异 应该在两个数据库之间 当其中之一具有相同的结构 他们跑得很慢。 Unix 差异, 或 sdiff,忽略空格但 需要一种方法来制作输入文件。

【讨论】:

【参考方案9】:

没有找到合适的工具,我决定创建自己的:sqlserverdump 命令行实用程序。查看github。

【讨论】:

【参考方案10】:

使用 SQL Server 2008 Management Studio 非常轻松地做到这一点:

1.) 右键单击​​数据库(不是表)并选择任务 -> 生成脚本

2.) 在首页点击下一步

3.) 如果要复制整个数据库,只需单击下一步。如果你想复制特定的表,点击“选择特定的数据库对象”,选择你想要的表,然后点击下一步。

4.) 应选择“保存到文件”。 重要提示:点击“保存到文件”旁边的“高级”按钮,找到“要脚本的数据类型”,将“仅架构”更改为“架构和数据”(如果要创建表) 或“仅数据”(如果您要将数据复制到现有表中)。

5.) 点击其余部分,您就完成了!它将保存为 .sql 文件。

【讨论】:

这只是太多的 UI。这可以通过命令行完成吗?【参考方案11】:

如果您需要 CREATE TABLE... & INSERT INTO... 等等效 SQL 语句,那么我建议您尝试 HeidiSQL。这是一个很棒的免费实用程序,可以访问 Microsoft SQL Server、MySQL 和 PostgreSQL。它使您能够浏览和编辑数据,创建和编辑表、视图、过程、触发器和预定事件。此外,您可以将结构和数据导出到 SQL 文件。 http://www.heidisql.com

转到工具/将数据库导出为 SQL 并选择架构。 选中该框以创建表格和“插入”数据。就是这样。

比起“Microsoft SQL Server Management Studio”或phpMyAdmin...等,我更喜欢HeidiSQL。

【讨论】:

以上是关于SQL Server 的 mysqldump 等效项的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中的 DISTINCTROW 等效项

Snowflake 中的 SQL Server 等效表类型是啥

MySQL 限制的 SQL Server 等效项 [重复]

SQL Server 到 Netezza 数据类型等效

SQL Server:删除表级联等效?

SQL Server 数据类型的 C# 等效项