SQL Server 2008:将所有表的内容从一个数据库复制到另一个数据库

时间:2010-10-26 21:16:44

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

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

5 个答案:

答案 0 :(得分:3)

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

我可以发布截图来演示你喜欢的方式。

~~~~~~~~添加了截图~~~~~~~~~~~~~~

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

alt text

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

alt text

为要粘贴的第二个数据库选择还原:

alt text

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

alt text

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

alt text

单击“确定”,它应该可以正常工作。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分:1)

让自己成为红门SQL Data Compare - 最适合工作的工具,请放下手。

更新:如果您不想或不想花钱,但想要花费大量时间,您当然可以为每张桌子做这样的事情:

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

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

答案 4 :(得分:1)

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

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