【问题标题】:How to get script of SQL Server data? [duplicate]如何获取 SQL Server 数据的脚本? [复制]
【发布时间】:2011-01-20 05:36:13
【问题描述】:

我正在寻找一种方法来执行类似于 SQL Server 中的 MySQL 转储的操作。我需要能够选择表并导出架构和数据(或者我可以通过 SQL Server Management Studio 导出架构并以某种方式单独导出数据)。

我需要这些数据能够返回并返回到 SQL Server,因此它需要维护 GUID/唯一标识符和其他列类型。

有谁知道这方面的好工具吗?

【问题讨论】:

    标签: sql sql-server export


    【解决方案1】:

    在 SQL Server Management Studio 中,您可以右键单击您的数据库并选择:

    Tasks -> Generate Scripts
    

    然后简单地继续完成向导。确保在提示选择脚本选项时将“脚本数据”设置为 TRUE。

    SQL Server 2008 R2

    进一步阅读:

    【讨论】:

    【解决方案2】:

    SQL Server 管理工作室

    这是执行此任务的最佳工具。您可以生成一个脚本,该脚本将从数据库中构建您希望的任何表,并将数据插入这些表中(据我所知,您必须导出所选表中的所有数据)。

    要做到这一点,请按以下步骤操作:

    1. 右键单击您的数据库并选择任务 > 生成脚本

    2. 在“生成和发布脚本”向导中,选择“选择特定数据库对象”选项

    3. 展开“表格”树并选择您要为其导出方案和数据的所有表格,然后单击下一步

    4. 在下一个屏幕中选择您希望如何保存脚本(输出类型必须保持设置为“将脚本保存到特定位置”),然后单击右上角的高级按钮

    5. 在新打开的窗口中,General 部分下有一个名为“Types of data to script”的设置,将其设置为“Scheme and data”,然后点击 OK

    6. 单击下一步,查看导出摘要并再次单击下一步。这将生成脚本到您选择的目的地。

    要恢复您的数据库,只需创建一个新数据库并将生成的脚本的第一行更改为USE [Your.New.Database.Name],然后执行。您的新数据库现在将包含您从原始数据库中选择的所有表和数据。

    【讨论】:

      【解决方案3】:

      我花了很长时间在 SQL Management Studio 2012 中找到这个选项,但我终于找到了。该选项隐藏在下方屏幕的“高级”按钮中。

      我一直认为这只是假设文件生成的高级选项,因为它旁边就是它,但事实证明,MS 的某个人在这种情况下的 UI 设计真的很糟糕。 HTH 有人像我一样来到这个线程。

      【讨论】:

      • 值得注意的是,名称也更改为“脚本的数据类型”,即“常规”下的最后一项。
      • 在 SQL-Server 2014 中,此选项再次出现在其他地方,一般位于第 4 位。我有一个德国 IDE,也许这张图片还是有用的:fs5.directupload.net/images/161202/qya3wcfl.jpg
      • @TimSchmelter 对于其他人:此选项在英文中称为“脚本的数据类型”,选项卡常规中的最后一个选项
      【解决方案4】:

      如果您想编写所有表格行的脚本,那么 按照 Daniel Vassallo 的描述使用 Generate Scripts。你不能在这里出错

      其他 使用第三方工具(例如 ApexSQL Script 或 SSMS Toolpack)进行更高级的脚本编写,包括一些预处理、选择性脚本编写等。

      【讨论】:

        【解决方案5】:

        查看SSMS Tool Pack。它适用于 Management Studio 2005 和 2008。有一个选项可以生成插入语句,我发现它有助于将少量数据从一个系统移动到另一个系统。

        使用此选项,您必须单独编写 DDL 脚本。

        【讨论】:

          【解决方案6】:

          SqlPubWiz.exe(对我来说,它位于 C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Publishing\1.2>)

          在没有向导的情况下运行它。给它参数以在命令行上运行。

          SqlPubWiz.exe script -C "<ConnectionString>" <OutputFile>
          

          【讨论】:

          • 谢谢。我正在寻找一种命令行方式来执行此操作。需要注意的一件事是指定 -targetserver 2008 来获取 2008 的脚本。它没有在帮助文件中列出,但它可以工作。
          【解决方案7】:

          BCP 可以将您的数据转储到一个文件中,在 SQL Server Management Studio 中,右键单击该表,然后选择“script table as”,然后选择“create to”,然后选择“file...”,它会生成一个完整的表格脚本。

          BCP 信息
          https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=319
          http://msdn.microsoft.com/en-us/library/aa174646%28SQL.80%29.aspx

          【讨论】:

            【解决方案8】:

            我知道这个问题已经得到解答,但我在这里提出警告。 我们最近从一个客户那里收到了一个具有循环外键引用的数据库。 SQL Server 脚本生成器拒绝为具有循环引用的数据库生成数据。

            【讨论】:

            • 我想要解决这个问题,您必须介入并临时删除一些 FK 以允许 SQL Server 完成其工作。或者您手动为“有问题的”表订购 INSERT 语句。这意味着您不能将所有表格作为一组编写脚本,而是需要根据您对正确顺序的理解一次浏览几个表格?您是如何处理这些问题的?
            • 要解决循环引用的问题,您需要进入并删除有问题的 FK 关系。到目前为止,我发现这样做的唯一方法是在 SQL 中创建一个图表并选择它们之间有共同点的表——可能是“用户”或“订单”等概念。然后看看循环引用的图表并通过逐字选择它并点击删除来删除它。保存图表将强制进行 DDL 保存,并且关系将消失。请记住:这是生成脚本,而不是进行数据插入。循环引用不影响插入。
            猜你喜欢
            • 1970-01-01
            • 2023-04-10
            • 2013-03-26
            • 1970-01-01
            • 1970-01-01
            • 2011-09-24
            • 1970-01-01
            • 2014-10-26
            • 1970-01-01
            相关资源
            最近更新 更多