情景:
我有一个开发SERVERA,我需要从ServerB TableA插入来自tableA的数据。
SERVERA.TableA:serialnumber = empty,partnumber=empty
例如:
数据库连接string1。
Select serialnumber,partnumber from ServerB.TableA where (serialnumber='1')
然后
数据库连接string2
Insert into serialnumber,partnumber from SERVERA.TableA
结果:
SERVERA.TableA:serialnumber = 1,partnumber=2
答案 0 :(得分:0)
如果您正在使用Sql Server,您可以使用Linked Servers提供所需的工具,然后您就可以在ServerB上执行以下代码:
INSERT INTO [dbo].[TableA]
(
SerialNumber,
PartNumber
)
SELECT SerialNumber,
PartNumber
FROM [ServerA].[DatabaseNameOnServerA].[dbo].[TableA]
WHERE SerialNumber = '1'
如果您不能使用链接服务器,或者想要/需要在代码中执行它,那么这也很简单:
using (var connection = new SqlConnection(connectionStringForServerA)
{
connection.Open();
var query = "SELECT SerialNumber, PartNumber FROM [dbo].[TableA] WHERE SerialNumber = '1'";
using (var adapter = new SqlDataAdapter(query, connection);
{
var data = new DataTable();
adapter.Fill(data);
using (var connectionB = new SqlConnection(connectionStringForServerB)
{
var query = "INSERT INTO [dbo].[TableA] (SerialNumber, PartNumber) VALUES (@Serial, @Part)";
foreach(DataRow recordFromServerA in data.Rows)
{
using(var command = new SqlCommand(query, connectionB)
{
command.Parameters.AddWithValue("@Serial", recordFromServerA["SerialNumber"]);
command.Parameters.AddWithValue("@Part", recordFromServerA["PartNumber"]);
command.ExecuteNonQuery();
}
}
}
}
}
有更有效的方法来执行插入,但让代码完全拼出它正在做的事情,就像我在那里做的那样应该让你很清楚它是如何工作的(值得注意的是我没有实际上运行我给出的代码示例,因此可能需要一些调整,它也是特定于Sql Server的。)