Я пытаюсь переместить данные между двумя серверами.У меня есть идентичная таблица на каждом сервере с 3 полями: Customer_Code (varchar), Customer_EmailAddress (nvarchar), Customer_EmailAddressPosted (бит).
Dim DT_EmailsToUpdatePreCheck As New DataTable
Dim DT_EmailsToUpdateStage As New DataTable
На сервере 1 я выбираю все данные и сохраняю в DT_EmailsToUpdatePreCheck
TabletCommand.CommandText = "Select * from SOP_MissingCustomerEmail"
DT_EmailsToUpdatePreCheck.Load(TabletCommand.ExecuteReader)
TabletCommand.Parameters.Clear()
Затем я перебираю DT_EmailsToUpdatePreCheck и получаю количество записей от Server2, где ни Customer_Code, ни Customer_EmailAddress не идентичны, и сохраняю данные в DT_EmailsToUpdateStage.
For j As Integer = 0 To DT_EmailsToUpdatePreCheck.Rows.Count - 1
ServerCommand.CommandText = "Select Count(*) from SOP_MissingCustomerEmail where Customer_Code <> @Customer_Code and Customer_EmailAddress <> @Customer_EmailAddress"
ServerCommand.Parameters.AddWithValue("@Customer_Code", DT_EmailsToUpdatePreCheck.Rows(j).Item("Customer_Code"))
ServerCommand.Parameters.AddWithValue("@Customer_EmailAddress", DT_EmailsToUpdatePreCheck.Rows(j).Item("Customer_EmailAddress"))
If ServerCommand.ExecuteScalar = 0 Then
DT_EmailsToUpdateStage.ImportRow(DT_EmailsToUpdatePreCheck.Rows(j))
End If
ServerCommand.Parameters.Clear()
Next
Наконец, я выполняю итерацию DT_EmailsToUpdateStage для вставки записей в Server2
For i As Integer = 0 To DT_EmailsToUpdateStage.Rows.Count - 1
ServerCommand.CommandText = "Insert Into SOP_MissingCustomerEmail2 (Customer_Code, Customer_EmailAddress, Customer_EmailAddressPosted) Values (@Customer_Code, @Customer_EmailAddress, @Customer_EmailAddressPosted)"
ServerCommand.Parameters.AddWithValue("@Customer_Code", DT_EmailsToUpdateStage.Rows(i).Item("Customer_Code").ToString())
ServerCommand.Parameters.AddWithValue("@Customer_EmailAddress", DT_EmailsToUpdateStage.Rows(i).Item("Customer_EmailAddress").ToString())
ServerCommand.Parameters.AddWithValue("@Customer_EmailAddressPosted", DT_EmailsToUpdateStage.Rows(i).Item("Customer_EmailAddressPosted").ToString())
MessageBox.Show("Row Inserted")
ServerCommand.Parameters.Clear()
Next
Но при вставке я получаю сообщение об ошибке «Столбец Customer_Code» не принадлежит таблице ».Примечание. Последние два кодовых блока находятся внутри блока Try-Catch.