0

我有两个 sql 服务器(其中一个在我的 Web 服务器中:服务器 A,另一个在本地:服务器 B)

我使用下面的代码将 SQL SERVER A 中的表上的数据复制到 SQL SERVER B 中的另一个表:(不同的服务器和不同的数据库..这两个表在列中是相同的

服务器 A 开启

服务器 B 关闭

        string strsql = "SELECT * FROM **serverA_table**";
        ONda = new SqlDataAdapter(strsql, ONcon);
        ONds = new DataSet();
        ONda.Fill(ONds, "serverA_table");


        strsql = "SELECT * FROM serverB_table";
        OFFda = new SqlDataAdapter(strsql, OFFcon);
        OFFds = new DataSet();
        OFFda.Fill(OFFds, "serverB_table");

        DataRow[] newRow = ONds.Tables["serverA_table"].Select();

        DataTable dtTarget = new DataTable();
        dtTarget = OFFds.Tables["serverB_table"].Clone();

        foreach (DataRow temp in newRow)
        {
            dtTarget.ImportRow(temp);
        }



        SqlCommandBuilder cb = new SqlCommandBuilder(OFFda);
        OFFda.InsertCommand = cb.GetInsertCommand();
        OFFda.UpdateCommand = cb.GetUpdateCommand();
        OFFda.DeleteCommand = cb.GetDeleteCommand();
        OFFda.Update(OFFds.Tables["serverB_table"]);

但是什么都没有发生,也没有任何行被添加(导入)到我的 serverB_table !

请帮助我使用此代码或让我知道执行此操作的新方法!

提前致谢。

4

1 回答 1

1

您必须DataRow.SetAdded在导入行之前使用。尝试以下操作:

string strsql = "SELECT * FROM ServerATable";

using (ONcon = new SqlConnection(conString))
using (ONda = new SqlDataAdapter(strsql, ONcon))
{
    ONcon.Open();
    ONds = new DataSet();
    ONda.Fill(ONds, "serverA_table");
}

strsql = "SELECT * FROM ServerBTable";

using (OFFcon = new SqlConnection(conString))
using (OFFda = new SqlDataAdapter(strsql, OFFcon))
{
    OFFcon.Open();
    OFFds = new DataSet();
    OFFda.Fill(OFFds, "serverB_table");

    DataRow[] newRow = ONds.Tables["serverA_table"].Select();

    foreach (DataRow temp in newRow)
    {
        temp.SetAdded();
        OFFds.Tables["serverB_table"].ImportRow(temp);
    }

    SqlCommandBuilder cb = new SqlCommandBuilder(OFFda);
    OFFda.InsertCommand = cb.GetInsertCommand();
    OFFda.UpdateCommand = cb.GetUpdateCommand();
    OFFda.DeleteCommand = cb.GetDeleteCommand();
    OFFda.Update(OFFds.Tables["serverB_table"]);
}
于 2013-03-07T09:08:20.393 回答