我在两个不同的SQL Server中有两个不同的数据库。数据库在模式上是相同的,但在其中一个表中包含不同的数据。
我想将一个数据库中的一个表中的所有数据复制到另一个数据库中的同一个表中,这样我就可以摆脱从中复制数据的数据库。
数据太大,因此我无法创建数据脚本并将其运行到其他数据库中。
我怎样才能做到这一点?
答案 0 :(得分:2)
有许多方法,如ssis transfer,select * into,但如果您只是传输数据,我更喜欢以下方式
在源服务器上为目标服务器创建链接服务器,然后您可以使用四个部分名称
来引用目标服务器假设源的链接服务器是A而目标服务器是B,则数据移动就像
一样简单insert into B.databasename.Schema.Table
select * from table---this is in source server and db
如果数据很大并且您可能担心超时,您可以编写一个简单的脚本,可以批量执行,如
While (1=1)
begin
insert into B.databasename.Schema.Table
select top 10000* from table---this is in source server and db
if (@@rowcount=0)
break
end
创建链接服务器,您可以关注this
答案 1 :(得分:0)
您可以使用以下选项。并非所有这些都可行,具体取决于您的确切要求和服务器之间的网络安排。
SQL Server Management Studio - 导入&导出向导:可以从数据库的右键菜单中访问它>任务>导入数据(或导出数据)。
使用链接服务器的SQL查询:在两台服务器之间配置的链接服务器允许您从一个引用另一个服务器上的数据库,就像它们在同一台服务器如果您将表名完全限定为Server.Database.Schema.Table
,则任何有效的SQL查询方法都可以在一个数据库中的两个表之间传输数据。
SSIS :创建一个SSIS包,其中两个服务器都是连接,一个简单的工作流将数据从一个移动到另一个。有关如何使用SSIS的大量在线信息。
导出为平面文件格式然后导入:这可以使用上面的导入/导出向导或SSIS完成,但不是直接在两个服务器之间管理数据,而是将源表中的数据输出到文件系统上合适的平面文件格式。 CSV是最常用的格式。然后可以使用任何文件传输方法(例如,如果需要压缩到Zip文件)将该文件移动到目标服务器,并导入到目标表中。
数据库备份和恢复:与(4)类似,但您可以通过“任务”>创建源数据库的备份,而不是使用平面文件。备份...然后将该备份作为文件移动(就像CSV方法一样),并将其还原到目标服务器上。现在,目标服务器上有两个数据库,可以在本地将数据从一个数据库移动到另一个数据库。
答案 2 :(得分:0)
我希望这个查询对您有帮助!
INSERT INTO [dbo].[tablename] (Column1, Column2,Column3)
(select Column1, Column2,Column3, from [Database1].[dbo].[tablename]
谢谢!