sqlbulkcopy con notifyafter e transazioni

c# c#-4.0 sql sqlbulkcopy

Domanda

Ho il seguente codice, che sto cercando di usare per testare se è possibile avere transazioni e una proprietà notifyAfter utilizzata per generare un evento (ho già provato a sostituire l'evento con uno che ho creato / rilanciato ma viene sollevato solo dopo tutte le righe sono state copiate). Il seguente link suggerisce che non è possibile

MSDN

Qualcuno ha avuto qualche esperienza con questo? Grazie

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                {
                        try
                        {
                            using (SqlBulkCopy copy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity |SqlBulkCopyOptions.UseInternalTransaction))

                            {
                                //Column mapping for the required columns.
                                for (int count = 0; count < numberOfColumns; count++)
                                {
                                    copy.ColumnMappings.Add(count, count);
                                }

                                //SQLBulkCopy parameters.
                                copy.DestinationTableName = dataTableName;
                                copy.BatchSize = batchSize;

                                copy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                                copy.NotifyAfter = 5;

                                copy.WriteToServer(fullDataTable);
                            }
                        }
                        //Error(s) occured while trying to commit the transaction.
                        catch (InvalidOperationException transactionEx)
                        {
                            //uploadTransaction.Rollback();
                            status = "The current transaction has been rolled back due to an error. \n\r" + transactionEx.Message;
                            MessageBox.Show(status, "Error Message:");
                            alreadyCaught = true;
                            throw;
                        }
                }

Risposta popolare

Presumerei a causa della transazione, l'elaborazione si verifica solo dopo che la transazione è stata effettuata, quindi non si otterrà l'evento sollevato fino a dopo.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché