将表数据从一个服务器复制到另一个服务器

时间:2012-09-05 19:53:27

标签: sql sql-server-2008 c#-4.0

服务器A

Table1
Id  Name    State   Country
1   Abc OH  USA

Table2
Id  Counties    Places
1   abc     def
1   koi     koii
1   joi     joio

服务器B

Table1
Id  Name    State   Country

Table2
Id  Counties    Places

我在两台服务器下都有2台服务器ServerA和ServerB有两个表Table1 / Table2我正在尝试从Table1复制单行,并将表2中的相关行复制到ServerB的Table1和Table2。

这就是我尝试这样做的方式:

connection1 = connection to ServerA
connection2 = connection to ServerB

SqlCommand cmd1 = new SqlCommand("Select * from Table1 where id = 1");
SqlCommand cmd2 = new SqlCommand("Select * from Table2 where id = 1");

Connection1.Open();
Connection2.Open();

SqlDataReader reader1 = cmd1.ExecuteReader();
SqlDataReader reader2 = cmd2.ExecuteReader();

var value1 = reader1.read();
var value2 = reader2.read();

我使用SqlDataReader并执行上述命令并获取数据并将其插入ServerB Table1 and Table2。 这是正确的方法吗?可以使用更好的sql命令吗?

2 个答案:

答案 0 :(得分:1)

尝试使用 SQLBULKCOPY (See Example here),这要快得多,尤其是如果您有大量数据

答案 1 :(得分:0)

大多数数据库允许您连接到其他数据库。特定的sytnax高度依赖数据库。但是,一旦你这样做,你可以做类似的事情:

select *
into server2.<db2>.<schema2>.table2
from server1.<db>.<schema>.table1

create table server2.<db2>.table2 as
    select *
    from server1.<db>.table1

(语法取决于数据库。第一个是sql-server-like,第二个是oracle-like。)

如果您的数据有任何大小,使用链接服务器肯定是最好的方法。通过将其读入内存,您可能想要一次读取并插入一行。如果你有超过几十行,你会发现这种方式比必要的更耗时。