【问题标题】:Want to create a script to export Data and tables and views to a sql script想创建一个脚本来将数据和表和视图导出到 sql 脚本
【发布时间】:2012-12-07 17:27:31
【问题描述】:

想要创建一个脚本来将数据、表和视图导出到 sql 脚本。

我有 SQL Server 2008 r2。

到目前为止,我只能为所有表和视图自动生成一个 sqlscript。但数据不包括在内。

或者有没有更简单的方法可以将数据、表、视图从一台 SQL Server 导出到我的 ISP 的 SQL 服务器?

问候 茶

【问题讨论】:

  • [Non-materialized] 视图没有数据——它们只是存储的查询。

标签: sql-server sql-server-2008-r2


【解决方案1】:

如果由于某种原因无法进行备份/恢复,SSMS 的“生成脚本”工具包括一个高级脚本选项以包含数据:

【讨论】:

  • +1。要在 SSMS 2012 中访问此菜单,请右键单击数据库-->任务-->生成脚本。
【解决方案2】:

这里有一些可供考虑的选项(根据我的推荐优先级):-

  • 简单的备份和恢复将是最简单、最快捷的解决方案;
  • 使用数据脚本工具(如 Red-Gate 的数据比较)可以解决您的需求;
    • 将数据库比较用作 Visual Studio 的一部分。
  • 可以开发一个 SSIS 包来在两个实例之间来回传输数据;或
  • 使用 SET IDENTITY INSERT ON / OFF 命令为身份种子表编写您自己的脚本

【讨论】:

  • 我同意脚本工具通常是最佳选择。 Red-Gate 和其他供应商在一段时间内肯定填补了这一空白。只是想提一下 SSMS 现在可以正常运行(尽管通过链接 VALUES 子句生成的 SQL 可能会更好)。
【解决方案3】:

最简单的方法是创建备份,将 .bak 文件复制到另一台服务器,然后在那里恢复备份。

【讨论】:

  • 即使 SQL 服务器位于另一家公司(例如 ISP)中,它也能正常工作吗?它不会在备份中查找我的名字吗?
  • @TeaDrinkingGeek 不,它不会在意。只要您在两端使用相同版本的 SQL,这应该没问题。您也应该可以使用较新的版本(例如 2008 到 2012),但我认为您不能转到较旧的版本(例如 2008 到 2005)
【解决方案4】:

就像@jhewlett 所说的那样,这将是最好的方法。在评论部分回答问题。不,这应该不是问题。只需确保 SQL Server 版本相同。不久前有一个问题,有两台电脑安装了不同版本的 R2,无法恢复备份。您还可以做的其他事情是使用数据编写整个数据库的脚本,但不建议这样做,因为生成脚本并在另一台计算机上完成运行可能需要很长时间。

或者您可以简单地停止 SQL 服务器实例并将数据库复制到外部硬盘驱动器上,然后将其重新连接到其他服务器。只需记住在执行此步骤后启动实例。

【讨论】:

  • 复制和附加真的很暴力。如果脚本不是一个选项,您不认为备份和恢复更整洁吗?
【解决方案5】:

我在 mysql 中使用 Navicat Premium 来处理这类事情。它从数据、表、视图和其他任何东西中生成 sql。它还提供了从不同服务器或平台上的一个数据库复制或同步表的工具。例如,我经常使用它将我的表从 MySQL 转移到 SQLite 数据库,如此简单快捷。否则我不得不手动传输它,非常麻烦。

非常好的工具,任何数据库管理员或程序员都需要。它支持 MySQL、Oracle、MS SQL Server、PostgreSQL 和 SQLite。

【讨论】:

  • Navicat 从 sql server 数据库中导出表和结构。我曾尝试使用 SQL Server Management Studio 进行通常的导出,但它一直出错 - 我被告知要使用的用户存在某种权限问题。
【解决方案6】:

要使用数据生成架构,请按以下步骤操作。

  • 选择数据库以生成架构'>'右键单击'>'任务'>'生成架构'>'在弹出窗口中单击NEXT'>'
  • 选择 DB 对象生成架构,然后点击 NEXT '>'
  • 转到高级选项并向下滚动“>”
  • 找到要编写脚本的数据类型,然后根据需要选择一个选项。 '>' 然后 Next Next 并完成它。
  • 尽情享受吧。

【讨论】:

    【解决方案7】:

    如果您不想移植所有表数据(例如,您只需要移植特殊表中的一些基础数据)脚本选项对您没有用处。在这种情况下,您将有两个选择。一是使用一些第三方工具,例如Red-Gate,二是自己编写脚本。我更喜欢第二种选择,因为除了它们中的大多数价格昂贵外,我只想运行小脚本来实现小删除、更新和插入目的。但重要的问题在这里:可能记录数太长,无法逐条编写脚本。我认为链接服务器是解决这个问题的好方法。正如您在图像中看到的那样描述 Just Declare Linked Server 并在源数据库中获取新脚本并编写可以访问源数据库和目标数据库的脚本就足够了。附图必须清晰。

    Create New Linked Server:
    

    Write Destination SQL Server Address:
    

    Fill Login Info:
    

    Now you have Linked Server:
    

    Write script and enjoy:
    

    希望对您有所帮助。

    【讨论】:

    • 虽然您的方法有效,但它绝对是一种艰难而复杂的方法。它还增加了您的安全考虑范围。
    • @Eniola 你说得对。我不是说这是最好的方法。我刚刚谈到了另一种方式,我们可以对我相信的架构和数据的细节进行最大程度的控制。在正常情况下,我将使用 SQL Server 生成脚本,但在极少数情况下,特别是当我想将一些数据从一个数据库移植到另一个数据库时,我更喜欢这种方式。感谢您的通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多