powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при Bulk copy
4 сообщений из 4, страница 1 из 1
Ошибка при Bulk copy
    #39707502
Bujhm_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполняю Bulk copy

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
 Using objConnect As New SqlConnection(GetConnectionString)
                objConnect.Open()
                Dim transact As SqlTransaction = objConnect.BeginTransaction()

                If rowCount > 0 Then
                    Using bc As New SqlBulkCopy(objConnect, SqlBulkCopyOptions.Default, transact)

                        With bc
                            .DestinationTableName = "[" + "dbo" + "].[" + strDataBaseTableName + "]"
                            .BulkCopyTimeout = 5000
                            .BatchSize = 100
                            .NotifyAfter = 1000
                        End With

                        AddHandler bc.SqlRowsCopied, New SqlRowsCopiedEventHandler(AddressOf OnSqlRowsCopied)

                        Try
                            Dim isDone As Boolean = False
                            bc.WriteToServer(ds.Tables(0))
                            transact.Commit()

                            isDone = True
                            If isDone Then
                                Me.tslblProgress.Text = "Импорт: " + Me.rowCount.ToString() + "/" + Me.rowCount.ToString() + " строк"
                                MessageBox.Show("Операция импорта выполнена успешно!" & vbCrLf & "вствлено " _
                                                + Me.rowCount.ToString() + " строки.", "Импорт", MessageBoxButtons.OK, MessageBoxIcon.Information)
                                ReLoad()
                            Else
                                Me.tslblProgress.Text = "ОШИБКА: Ошибка чтения и вставки записей!"
                            End If
                        Catch ex As Exception

                            transact.Rollback()
                            'MsgBox(ex.ToString, MsgBoxStyle.Critical, "Ошибка вставки")
                            Dim faultyDataRow As DataRow = ds.Tables(0).Rows(0)
                            errorMessage.AppendFormat("Ошибка: {0}{1}", ex.Message, Environment.NewLine)
                            errorMessage.AppendFormat("№ строки: {0}", Environment.NewLine)
                            'For Each column As DataColumn In ds.Tables(0).Columns
                            '    errorMessage.AppendFormat("" & vbTab & "Column {0} - [{1}]{2}", column.ColumnName, faultyDataRow(column.ColumnName).ToString, Environment.NewLine)
                            'Next

                            MsgBox(errorMessage.ToString, MsgBoxStyle.Critical, "Ошибка вставки")


                        Finally
                            dtr.Close()
                        End Try

                    End Using
                Else
                    Me.tslblProgress.Text = "Ошибка: Нет строк для вставки записей!"
                End If
            End Using



Если импортируемая таблица содержит "правильные" форматы и количество их совпадает с требуемым все гуд, а вот при ошибке возвращает пустую таблицу
Вопрос: почему не отрабатывает transact.Rollback()!??:
Мне необходимо при ошибке вставки не трогать предыдущий импорт!
...
Рейтинг: 0 / 0
Ошибка при Bulk copy
    #39709044
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bujhm_C,

ничего не понял

у вас роллбак, значит отмена вставки. почему же таблица должна быть полной?
...
Рейтинг: 0 / 0
Ошибка при Bulk copy
    #39709414
Bujhm_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

При ошибке вставки Rollback() -откатить. Разве не так?

Код: vbnet
1.
2.
3.
4.
5.
 Catch ex As Exception
 transact.Rollback()
 Finally
 dtr.Close()
End Try



А при удачной вставке:
Код: vbnet
1.
2.
3.
4.
Try
 Dim isDone As Boolean = False
bc.WriteToServer(ds.Tables(0))
 transact.Commit()


закрепить transact.Commit()

Что не так?

Попробовать добавить
Код: vbnet
1.
2.
3.
4.
Else
 Me.tslblProgress.Text = "ОШИБКА: Ошибка чтения и вставки записей!"

End If

transact.Commit()? Попробую, но не отрабатывает в другом месте Catch ex As Exception
...
Рейтинг: 0 / 0
Ошибка при Bulk copy
    #39709419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bujhm_C,
тоже непонятен ваш вопрос.
Используйте ООП:

Код: c#
1.
2.
3.
4.
5.
6.
var con = GetConnect();
conn.....старт транзакции
try
   МойМетод(conn)
exception
.....
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при Bulk copy
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]