首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将大量表记录从SQL Server Dev复制到Prod

将大量表记录从SQL Server Dev复制到Prod
EN

Stack Overflow用户
提问于 2012-11-15 04:45:28
回答 4查看 1K关注 0票数 1

我有一个包含大约500万条记录的表,我只需要将最后100万条记录转移到生产环境中(因为其他400万条记录已经存在)。这样做的最好方法是什么,这样我就不必每次都重新复制整个表?

EN

Stack Overflow用户

发布于 2012-11-15 06:51:10

因为它们位于不同的服务器上,这会改变一切。简而言之:为了知道dev中没有什么,你需要将DEV中的所有东西都与PROD中的所有东西进行比较,所以没有简单的方法可以避免比较巨大的数据集。

用于在PROD和DEV系统之间进行复制的一些不同策略:

A.备份和恢复整个数据库,然后应用脚本进行清理

B.在PROD数据库中实现记录更改的触发器,然后仅复制发生更改的记录

C.识别一些你知道的没有改变的分区或记录集(例如12个月前),只刷新那些不在该数据集中的分区或记录集。

D.使用SSIS将所有prod复制到DEV服务器上的临时表中。使用与上面非常相似的查询,仅在整个数据库中插入新记录。删除临时表。

E.您也许能够找到一个第三方SSIS组件,它可以有效地完成这项工作。开箱即用,SSIS在比较更新方面效率低下。

你真的知道最后一百万条记录是什么吗?也就是说,表示的是地点、日期还是什么?你能写一个select来识别它们吗?

基于这条评论:

不需要比较,因为我知道ID>X会起作用

假设您已经在DEV服务器上创建了一个名为PRODSERVER的链接服务器,则可以在DEV服务器上运行此命令

代码语言:javascript
运行
复制
INSERT INTO DB.dbo.YOURTABLE (COL1, COL2, COL3...)
SELECT COL1, COL2, COL3...
FROM PRODSERVER.DB.dbo.YOURTABLE
WHERE ID > X

有关如何创建SQL Server链接服务器的详细信息,请查阅“SQL Server链接服务器”。

这对于一个人来说是很好的,但是如果你经常这样做,你可能想要做一些更健壮的东西。

例如,您可以创建一个脚本,使用BCP.EXE将数据导出到一个文件,将其复制到DEV,然后再次导入。这更可靠,因为它在一批中完成,而不是需要整个时间的网络连接。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13387017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档