我有两个具有THE SAME架构的数据库。我需要将所有表的内容从一个数据库复制到另一个数据库中。做这个的最好方式是什么?大约有200张桌子。我有ssms。
答案 0 :(得分:3)
如果您不关心第二个数据库中的数据(您不是在寻找合并),则可以备份数据库,然后将其恢复到另一个数据库。
我可以发布截图来演示你喜欢的方式。
~~~~~~~~添加了截图~~~~~~~~~~~~~~
开放式管理工作室&连接,然后从任务菜单进入备份数据库:
然后单击“确定”按钮备份数据库(注意,选择一个不同的备份目录,例如C:\可能不是一个坏主意,以便在以后尝试恢复时不会“正在使用”):
为要粘贴的第二个数据库选择还原:
从列表中选择第一个数据库,或从以下位置浏览到要备份的文件:
在对现有数据执行恢复时,可能需要在选项选项卡上选中此复选框:
单击“确定”,它应该可以正常工作。
答案 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.TABLES或INFORMATION_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的数据比较它在尝试解决数据问题时非常有用。