C# SQLBULKCOPY - Verletzung der primären SchlüsselbeschränkungenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# SQLBULKCOPY - Verletzung der primären Schlüsselbeschränkungen

Post by Anonymous »

Ich führe eine C# WinForms -Anwendung aus, die jeden Monat Daten von einer .csv -Datei in eine SQL -Server -Datenbank mit SQLBULKCOPY hochlädt, aber ich drücke mehrere Instanzen des Fehlers:

Verstöße gegen die Primärschlüsselgrenze $ id '. Der doppelte Schlüssel in Objekt 'dbo.Anaintbl' < /p>
< /blockquote>
Ich habe die verschiedenen Instanzen dieses Fehlers durchsucht und keine gefunden, die anscheinend gleich zu sein scheint. Meine Daten haben nicht den PK -Wert, der beim Erstellen des Servers diese automatisch erstellt, aber es scheint immer noch zu versuchen, vorhandene PK -Werte zu verwenden. Die Daten sind rund 550.000 Zeilen pro Monat mit 54 Spalten. < /P>
Hier ist mein Code: < /p>

Code: Select all

private void RunSQLBulkCopy(DataTable table)
{
GlobalInfo.dbConn.Open();

using (SqlTransaction transaction = GlobalInfo.dbConn.BeginTransaction())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GlobalInfo.dbConn, SqlBulkCopyOptions.Default, transaction))
{
bulkCopy.DestinationTableName = "MainTbl";

try
{
table.Columns.Cast().ToList().ForEach(x =>
bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(x.ColumnName, x.ColumnName)));

bulkCopy.BatchSize = 5000;
bulkCopy.WriteToServer(table);

transaction.Commit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
transaction.Rollback();
UploadFailedTables.Add(table);
}
}
}

if (GlobalInfo.dbConn.State == ConnectionState.Open)
{
GlobalInfo.dbConn.Close();
}
}
< /code>
Um das [url=viewtopic.php?t=15738]Problem[/url] vorzuführen, habe ich es so eingerichtet, dass ich meine Upload -Datei in kleinere Tabellen aufteilte und sie dann in den oben genannten Upload -Prozess sende. Wenn der Prozess auf die PK-Verstöße trifft, rollt die Transaktion zurück und die Tabelle wird in einer Liste gespeichert, die später neu bearbeitet wird. Die Duplikate stammen aus vorhandenen Daten und nicht aus Daten, die während dieser Uploads erstellt wurden. von SQLBulkCopyOptions.Keepidentity 
bis sqlbulkCopyOptions.default Aber keine Änderung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post