Ich habe ein Programm, das eine Massenkopie in einige Sybase-DB-Tabellen ausführt. Die Rollback-Transaktion funktioniert jedoch nicht. Beim Durchlaufen der Logik scheint das Problem beim Transaktionsobjekt zu liegen. Ich bin gerade ratlos. Jeder Rat wäre großartig.C# -Transaktionsfehler in AseBulkCopy
public static void SqlBulkCopy()
{
try
{
conn.Open();
using (transaction = conn.BeginTransaction())
{
using (bulkCopy = new AseBulkCopy(conn, AseBulkCopyOptions.Default, transaction))
{
BulkCopying("DB_TABLE_1", dataTable1);
BulkCopying("DB_TABLE_2", dataTable2);
BulkCopying("DB_TABLE_3", dataTable3);
transaction.Commit();
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
private static void BulkCopying(string dbTableName, DataTable dtSourceName)
{
try
{
bulkCopy.BatchSize = 1000;
bulkCopy.BulkCopyTimeout = 720;
bulkCopy.NotifyAfter = 1000;
bulkCopy.DestinationTableName = dbTableName;
bulkCopy.WriteToServer(dtSourceName);
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
}
Dies ist der Fehler, den ich habe:
Sybase.Data.AseClient.AseException: Der Befehl 'CREATE TABLE' nicht innerhalb einer Multi-statement Transaktion erlaubt in die 'Tempdb'-Datenbank.