1

服务器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 中的单行和 Table2 中的关联行复制到 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命令吗?

4

2 回答 2

1

尝试使用SQLBULKCOPY (请参见此处的示例),这会更快,尤其是在您拥有大量数据的情况下

于 2012-09-06T02:29:36.553 回答
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。)

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

于 2012-09-05T20:31:02.970 回答