【问题标题】:SQL Server 2008: copying the contents of all tables from one database into another databaseSQL Server 2008:将所有表的内容从一个数据库复制到另一个数据库
【发布时间】:2010-10-26 21:16:43
【问题描述】:

我有两个具有相同架构的数据库。我需要将所有表的内容从一个数据库复制到另一个数据库。做这个的最好方式是什么?大约有200张桌子。我有 ssms。

【问题讨论】:

  • SQL 检查器套件。在包含 900 多个表的数据库中使用它,效果非常好!

标签: sql sql-server sql-server-2008 ssms


【解决方案1】:

如果您不关心第二个数据库中的数据(您不是在寻找合并),您可以备份您的数据库,然后在另一个数据库上恢复它。

如果您愿意,我可以发布屏幕截图来演示。

~~~~~~~~新增截图~~~~~~~~~~~~~~

打开管理工作室并连接,然后从任务菜单进入备份数据库:

然后单击确定按钮备份数据库(注意,选择不同的备份目录,例如 C:\ 可能不是一个坏主意,以便稍后尝试恢复它时它不是“正在使用”):

为您要粘贴的第二个数据库选择恢复:

从列表中选择第一个数据库,或浏览到要备份的文件:

在对现有数据执行还原时,可能需要选中选项选项卡上的此复选框:

点击确定,它应该可以工作了。

【讨论】:

  • 我只想将一个数据库中的所有数据复制到另一个数据库。我会喜欢一些快照!谢谢
【解决方案2】:

您可以在 SSMS 中使用导出向导。右键单击源数据库,选择任务/导出数据并按照步骤操作。 200 张桌子有点乏味,但它是免费的。

【讨论】:

    【解决方案3】:

    如果不花费 $,您可以使用 SELECT ... INTO ... 语法——前提是目标数据库中不存在 INTO 子句中指定的表:

    SELECT *
      INTO new_db.dbo.table
      FROM old_db.dbo.table
    

    但这不会迁移约束、触发器、作业、登录名、角色等。如果数据库位于不同的主机上,您可以使用Linked Server instance 连接它们并使用四个名称表示法来引用远程实例。

    至于处理约 200 个表,您需要使用动态 SQL 来创建语句,因为您无法在动态 SQL 中将表名作为变量提供。表格列表可以来自SYS.TABLESINFORMATION_SCHEMA.TABLES

    【讨论】:

      【解决方案4】:

      让自己成为 Red-Gate SQL Data Compare - 工作的最佳工具,放下手。

      更新:如果你不能或不想花任何钱,而是想花很多时间,你当然可以为每张桌子做这样的事情:

      INSERT INTO TargetDatabase.dbo.YourTable1(list of fields)
         SELECT (list of fields) FROM SourceDatabase.dbo.YourTable1
      

      然后对其他 199 个表也重复此操作。

      【讨论】:

      • @marc: 我只想将所有内容从一个数据库复制到另一个
      • 是的 - 为该工作获取 SQL 数据比较 - 这是执行此操作的最佳工具。
      • @marc 有免费的方法吗?
      • 不——要么你花了很多时间(这不值得吗?),要么你得到了一个工具来帮助你
      • @marc 你绝对是对的,但我需要告诉我的老板,他必须支付 400 美元才能复制一些表格
      【解决方案5】:

      我使用 RedGate 的数据比较,它在尝试解决数据问题时非常有用。

      http://www.red-gate.com/products/SQL_Data_Compare/

      【讨论】:

      • 我只想将所有内容从一个数据库复制到另一个数据库
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2012-12-13
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多