0

私は2つのSQLサーバーを持っています(そのうちの1つは私のWebサーバーにあります:サーバーA、もう1つはローカルです:サーバーB)

次のコードを使用して、SQL SERVER A のテーブルのデータを SQL SERVER B の別のテーブルにコピーします: (異なるサーバーと異なるデータベース.. 2 つのテーブルの列は同じです)

サーバー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 に答える