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的服务器表中,然后使用以下命令在远程系统上执行插

关于以下方面,如何将(可能较大)表的内容从本地数据库传输到远程托管数据库

  • 目标表中不允许有重复项
  • 数据流量应保持在最低限度
?

在本地,我在远程主机上安装了SQL Server Express:SQL Server Standard。

根据主机提供商的“距离”(->带宽),运行涉及两个数据库中的表的查询通常不是一个好主意,尽管从技术上讲,使用MSSQL studio可以做到这一点

我的建议是:从本地表(比如
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