繁体   English   中英

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

[英]SQL Server 2008: copying the contents of all tables from one database into another database

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

如果您不关心第2个数据库中的数据(您不希望合并),则可以备份数据库,然后在另一个数据库上进行还原。

我可以发布屏幕截图以演示您的喜好。

~~~~~~~~添加屏幕截图~~~~~~~~~~~~~~~

打开Management Studio并进行连接,然后从“任务”菜单进入备份数据库:

替代文字

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

替代文字

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

替代文字

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

替代文字

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

替代文字

单击确定,它应该工作。

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

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

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

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

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

掌握Red-Gate SQL数据比较 -最佳的工作工具,轻松掌握。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM