SqlBulkCopy Obsługa błędów / kontynuacja po błędzie

Próbuję wstawić ogromną ilość danych do serwera SQL. Moja tabela docelowa ma unikalny indeks o nazwie „Hash”.

Chciałbym zastąpić moją implementację SqlDataAdapter SqlBulkCopy. W SqlDataAapter znajduje się właściwość o nazwie „ContinueUpdateOnError”, gdy ustawiona na true adapter.Update (tabela) wstawi wszystkie możliwe wiersze i oznaczy wiersze błędów właściwością RowError.

Pytanie brzmi: jak mogę użyć SqlBulkCopy do wstawienia danych tak szybko, jak to możliwe, jednocześnie śledząc, które wiersze zostały wstawione, a które nie (z powodu indeksu unikalnego)?

Oto dodatkowe informacje:

Proces jest powtarzalny, często powtarzany w harmonogramie.

Tabele źródłowe i docelowe mogą być ogromne, czasem miliony wierszy.

Mimo że możliwe jest najpierw sprawdzenie wartości mieszania, wymaga dwóch transakcji na wiersz (najpierw do wybrania wartości mieszania z tabeli docelowej, a następnie wykonania wstawienia). Myślę, że w przypadku adapter.update (tabela) szybsze jest sprawdzenie RowError niż sprawdzanie trafień skrótu na wiersz.

questionAnswers(3)

yourAnswerToTheQuestion