Jump to content

SQLBulkCopy mit KeepIdentity


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Guten Tag Kollegen,

ich habe da eine wichtige Frage:

wenn ich SqlBulkCopy wie folgt verwende:

using (var bulkCopy = new SqlBulkCopy(ACon, SqlBulkCopyOptions.KeepIdentity, ATransaction))

Wird dann die KeepIdentity Option für die Tabelle bei Fehler automatisch wieder entfernt? Scheint mir nicht so.

Wie kann ich diese Option wieder rückgängig machen?

 

Und einen Guten Rutsch ins neue Jahr ;)

 

Gruß Torsten

Link zu diesem Kommentar

Moin,

 

ich verstehe die Frage nicht ganz. KeepIdentity sorgt doch, wenn ich es richtig verstehe, dafür, dass beim Bulk-Load die Identity-Spalte der Tabelle von der Quelle übernommen wird. Damit ist das dann eine Eigenschaft der Zieltabelle. Die verschwindet dann natürlich nicht von selbst.

 

Eine Identity-Spalte nachträglich zu ändern, ist nicht ganz einfach, geht aber. Die Frage wäre aber, warum man das tut. Das berührt dann das Datenmodell und sollte gut durchdacht sein. Wäre es evtl. möglich, das Bulk-Copy ohne die Option auszuführen?

 

Gruß, Nils

 

Link zu diesem Kommentar

Hallo NilsK,

 

ich benutze KeepIdentity, um die Werte zu erhalten, da wir die Daten replizieren wollen. So wie ich das verstehe wird dabei  die Befehlszeile "SET IDENTITY_INSERT Tabelle ON".

Wenn jetzt ein Fehler bei WriteServer() auftritt, wird dann der Befehl wieder mit "SET IDENTITY_INSERT Tabelle OFF" aufgehoben???

Das ist meine Frage.

 

Gruß Torsten

 

Link zu diesem Kommentar

Moin,

 

jetzt verwirrst du mich endgültig. Vielleicht solltest du noch mal einen Schritt zurücktreten und klären, was du genau vorhast. Da scheinen mir Dinge durcheinander zu gehen. Wenn es nur darum geht, die Werte aus der Quelltabelle beizubehalten, muss die Zieltabelle ja keine Identity-Eigenschaft haben, dann ist das eben eine einfache Wertespalte. Oder übersehe ich da was?

 

Im Detail werde ich dir allerdings auch nicht weiterhelfen können, weil ich kein Developer bin.

 

Gruß, Nils

 

bearbeitet von NilsK
Link zu diesem Kommentar

Hallo NilsK,

 

Hintergrund ist, das wir mehrere gleiche Datenbanken haben, die aus einer Zentraldatenbank mit Daten versorgt wird. Früher mit der Replikation(Transaktional) und jetzt

wird das alles über SSIS Services gemacht. Die alte Replikation ging nicht mehr, weil Fehler in der Datenbankstruktur gemacht wurden. Die Urheber der Replikation sind auch nicht mehr verfügbar. Vielleicht liest das hier ja auch jemand aus dem Developer Team. Danke.

 

Gruß Torsten

 

 

Link zu diesem Kommentar
vor 3 Stunden schrieb Tossi65:

Vielleicht liest das hier ja auch jemand aus dem Developer Team. Danke.

Welches Developer Team? Von MSFT ein SQL Server Developer Team liest hier bestimmt nicht mit. Du kannst es natürlich im auf Entwickler Forum von Microsoft probieren: https://social.msdn.microsoft.com/Forums/de-DE/home?forum=sqlserverde

Link zu diesem Kommentar

Einer der SQL Server Entwickler für Linux aus Redmond spricht deutsch und liest mit. ;) Ansonsten kenne ich mindestens ein dutzend MA, die mitlesen.

Woher die Gäste sind, sieht man auch aus den anonymen Besucherlogs.

Aktiv sind hier schon länger wenige, ungefähr seitdem mehrere von den ehemaligen NGs zu uns gestoßen sind. 
Zugegebenermaßen hängt das aber eher mit der Einführung der MS Foren zusammen...

Link zu diesem Kommentar
Am 2.1.2023 um 12:41 schrieb Tossi65:

Hallo NilsK,

 

Hintergrund ist, das wir mehrere gleiche Datenbanken haben, die aus einer Zentraldatenbank mit Daten versorgt wird. Früher mit der Replikation(Transaktional) und jetzt

wird das alles über SSIS Services gemacht. Die alte Replikation ging nicht mehr, weil Fehler in der Datenbankstruktur gemacht wurden. Die Urheber der Replikation sind auch nicht mehr verfügbar. Vielleicht liest das hier ja auch jemand aus dem Developer Team. Danke.

 

Gruß Torsten

 

 

Ihr nehmt SSIS. Also isses net zeitkritisch. Ich würd da mit Logshipping anfangen. BTW. der SQL Server Replikation is die Datenbankstruktur völlig wurscht.

Link zu diesem Kommentar
vor 4 Stunden schrieb t-sql:

Ihr nehmt SSIS. Also isses net zeitkritisch. Ich würd da mit Logshipping anfangen. BTW. der SQL Server Replikation is die Datenbankstruktur völlig wurscht.

 

Das ist so nicht korrekt. Das hängt vom Typ der Replikation ab. Und ob Log Shipping passt, hängt doch sehr von den Anforderungen ab. Nach dem, was bislang dazu bekannt ist, passt es ziemlich sicher nicht.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...