В этом случае я хочу выбрать данные из таблиц оракула, затем удалить данные из таблиц SQL и затем вставить данные из таблиц оракула в таблицы SQL. Для выбора я не использую транзакции. Для удаления и вставки я использую транзакцию для таблиц SQL. запуск транзакции в начале обеих команд удаления и после выполнения обоих операторов вставки инициирует транзакцию фиксации.
Я работаю в Visual Studio 2010 и SQL Server 2008 R2. Попытался установить режим отладки на любой процессор, но не сработал.
transactionSQL = conSql.BeginTransaction
strSqldelAr = "delete from ar_remark_tab "
Dim cmdSqlDelAr As SqlCommand = New SqlCommand(strSqldelAr, conSql, transactionSQL)
Dim classidAr As Long
classidAr = Convert.ToInt64(cmdSqlDelAr.ExecuteNonQuery())
cmdSqlDelAr.Parameters.Clear()
еще один синтаксис удаления, подобный этому, с изменением имени таблицы.
теперь вставьте в таблицу один оператор
For iRow As Integer = 0 To count - 1
strQL = strQL & " insert into ACCRCV_OUTST_TAB( aot_div, aot_loc,...")
strQL = strQL & " values ("
strQL = strQL & IIf(dsOra.Tables(0).Rows(iRow)
("Aot_cust_po_dt").Equals(DBNull.Value), "'" & DBNull.Value.ToString & "'", "'" & dsOra.Tables(0).Rows(iRow)("Aot_cust_po_dt") & "'") & ")"
Dim cmdSQL As SqlCommand = New SqlCommand(strQL, conSql, transactionSQL)
Dim classidInsert As Long
classidInsert = Convert.ToInt64(cmdSQL.ExecuteNonQuery())
cmdSQL.Parameters.Clear()
Next
еще один оператор вставки, как указано выше, а затем
If transactionSQL.Connection IsNot Nothing Then
transactionSQL.Commit()
End If
Попытка блока catch также существует .. Если происходит сбой, затем переходит к блоку перехвата и откатывает транзакцию.
Когда я пытался протестировать с одной записью, он успешно работал без каких-либо ошибок, но когда япробовал тестировать около 3000 записей, получил это сообщение. Снятие галочки с MDA не решит проблему согласно моему пониманию. Следовательно, дайте знать решение по тому же.