SQL Server:复制数据而不复制
关于以下方面,如何将(可能较大)表的内容从本地数据库传输到远程托管数据库SQL Server:复制数据而不复制,sql,sql-server,sql-server-2008,tsql,ssms,Sql,Sql Server,Sql Server 2008,Tsql,Ssms,关于以下方面,如何将(可能较大)表的内容从本地数据库传输到远程托管数据库 目标表中不允许有重复项 数据流量应保持在最低限度 ? 在本地,我在远程主机上安装了SQL Server Express:SQL Server Standard。根据主机提供商的“距离”(->带宽),运行涉及两个数据库中的表的查询通常不是一个好主意,尽管从技术上讲,使用MSSQL studio可以做到这一点 我的建议是:从本地表(比如tbl)将全部数据上传到名为tmptbl的服务器表中,然后使用以下命令在远程系统上执行插
- 目标表中不允许有重复项
- 数据流量应保持在最低限度
tbl
)将全部数据上传到名为tmptbl
的服务器表中,然后使用以下命令在远程系统上执行插入操作
INSERT INTO tbl (id,col1,col2,col3, ...)
SELECT id,col1,col2,col3, ... FROM tmptbl WHERE id NOT IN (
SELECT id FROM tbl
)
之后,您可以再次删除导入表tmptbl
。。。
本例假设id
唯一标识您的记录。我仍然明确地命名了所有列,以防在每个表中有进一步的自动增量
-ed主键
编辑:
或者,(理论上)可以通过使用sp_addlinkedserver
链接远程服务器,在两台服务器的表之间直接应用上述语句,请参阅。我过去也曾尝试过,但发现由于服务器之间的带宽有限,性能非常差,尤其是对于较大的表。我知道这种方法,我只是想知道是否还有其他选择,可能是在SSMS或it TSQL中使用导入/导出数据对话框(在不同服务器之间复制,而不仅仅是在表之间)我还尝试了很多SSMS导入选项,但最终所描述的版本对我来说效果最好,主要是因为两个数据库服务器之间的带宽限制有限。在一个数据库中执行子查询或联接总是最有效的。好的,感谢您的确认。顺便说一句,对于任何感兴趣的人,现在他的功能内置于Visual Studio 2013 Professional中。因此,我们可以使用不同的合并/覆盖/etc选项将数据从本地/测试数据库服务器复制到prod