Gestione degli errori con SqlBulkCopy: potrebbe essere più difficile?

dataadapter dataset exception sqlbulkcopy

Domanda

Esegui idee molto basse qui. Ho un caso in cui sto usando SqlBulkCopy per pompare dati in un DB, e circa a metà ho incontrato eccezioni diverse (violazioni delle chiavi primarie, violazioni dell'indice, ecc.).

Ho confermato che le violazioni sono effettivamente vere e devono essere corrette nei dati. Ciò che è esasperante, tuttavia, è che se scrivessi nel DB con un DataAdapter (che sarebbe molto più lento), le righe danneggiate nel DataSet avrebbero attivato HasErrors in modo da poterle facilmente trovare e prendersi cura delle cose. Con SqlBulkCopy? Zilch. Nada. Buona fortuna a trovare chi ha causato il tuo problema perché tutto quello che ottieni è un nome di errore (come "violazione della chiave primaria in yada yada yada, blah blah blah") e il gioco è fatto.

Eventuali suggerimenti? Non posso credere che non ci sia modo di ottenere questi errori. Con il BCP standard penso che puoi persino pompare queste cose in un file di registro. Non possiamo fare qualcosa di simile con SqlBulkCopy?

Grazie,

Risposta popolare

Quando eseguo importazioni di dati che richiedono la convalida, di solito eseguo il dump dei dati in una tabella che prenderà i dati così come sono, quindi eseguirò un proc memorizzato o qualche altro sql in grado di convalidare i miei dati in un modo basato su set, effettuare le trasformazioni e lo metto nella destinazione finale in un modo che posso controllare.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow