背景
在某些情况下,需要将特定表从生产数据库复制到DEV。一种用于测试或故障排除的目的。属于数据对比和同步的工作范围。
写在前面
参考文档为https://www.sqlshack.com/how-to-copy-tables-from-one-database-to-another-in-sql-server/
link
使用
此方法只是众多方法中的一个,比如使用tablediff,或是Visual studio 插件
ApexSQL Diff是有用的SQL工具,可用于从架构端查找数据库之间的差异,
并生成同步脚本以按正确的顺序在目标数据库中创建这些表。
ApexSQL Data Diff还是另一个SQL工具,可用于从数据侧查找数据库之间的差异,
并生成同步脚本以将数据插入目标数据库表中,同时考虑了Identity列。
我们可以利用这两个工具的优势来生成所需的脚本,以创建要与其对象一起复制的表,
并按照以下步骤将数据从源表复制到目标表:
1.启动ApexSQL Diff工具
2.在“新建项目”窗口的“数据源”选项卡中,指定源服务器名称,
源数据库名称和用于连接到源服务器的身份验证方法。如果选择SQL Server身份验证,
则需要指定有效的用户名和密码。
还指定目标服务器名称,目标数据库名称和用于连接到目标服务器的身份验证方法。
如果选择SQL Server身份验证,则需要指定有效的用户名和密码。
您可以通过单击数据源下方的“反向”按钮来更改指定为源服务器或目标服务器的每台服务器的角色:
2.
3.设置完所有内容后,单击“比较”按钮。将显示主应用程序窗口,其中包含“结果”网格,
其中包含两个数据库之间共有的对象,并且该对象存在于其中一个数据库中,但不存在于第二个数据库中:
3.
然后选择要复制的表:
4.
同步前:
4.1
执行同步:
如果您不想编写相关表的脚本,请在“同步”向导 的“依赖关系”步骤中,
取消选中“包括依赖数据库对象”选项,然后单击“下一步”:
在“同步”向导的“输出选项”步骤中,如果要生成脚本并手动运行,
请选择“创建同步脚本”操作,或者选择“立即同步”操作以使该工具直接在目标服务器上运行脚本,
然后单击“下一步”按钮。 :
现在,将以正确的顺序生成用于创建具有其对象的数据库表的脚本。
您只需在“执行”按钮上单击即可在目标数据库上运行此脚本以创建表:
(如果是保存为脚本文件,需要复制到相应主机的相应库中手动执行)
以下是直接在工具中打开了脚本,需要手动执行:
同步后:
以上是同步数据
还有一个工具ApexSQL Data Diff,可以查看源库和目标库的差异并同步
ApexSQL数据差异工具,如果读者想具体查看库之间的差异是需要另行安装
官网地址https://www.apexsql.com/sql-tools-datadiff.aspx
link
(和ApexSQL Diff操作类似)相关教程https://www.sqlshack.com/how-to-copy-tables-from-one-database-to-another-in-sql-server/
link
本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删