none
Transaktionssicher RRS feed

  • Frage

  • Hallo zusammen,

    ich möchte Daten von "Datenbank A" in die "Datenbank B" übertragen. Dieses muss natürlich sicher geschehen. Das heißt, wenn jemand während des Vorgangs das Netzwerkkabel zieht oder ähnliches geschieht, dürfen keine Daten übergeben werden. Jetzt gibt es verschiedene Transaktionsanweisungen.  Welche nutze ich hierfür am besten?

    Hier mal ein kleiner Ausschnitt meiner Anweisung was geschehen soll. Wie binde ich diese Anweisung hier ein?

    Delete from DB1.dbo.Tabelle1
    Insert into DB1.dbo.Tabelle1
    select * from DB2.dbo.Tabelle1
    
    Delete from DB1.dbo.Tabelle2
    Insert into DB1.dbo.Tabelle2
    select * from DB2.dbo.Tabelle2
    
    Delete from DB1.dbo.Tabelle3
    Insert into DB1.dbo.Tabelle3
    select * from DB2.dbo.Tabelle3

    Bitte um Hilfe!

    Mfg

    RK


    Montag, 24. Februar 2014 11:47

Antworten

Alle Antworten

  • Da die Datenbanken sich offenbar in der selben SQL Server Instanz  befinden, ist es mit einem

    BEGIN TRANSACTION
    
    -- Inserts...
    
    COMMIT TRANSACTION

    getan.

    Natürlich schadet ein wenig Error-Handling nicht, gerade, wenn es sich um einen wiederholbaren Prozess handelt. Das geht hieraus nicht hervor.

    In dem Bereich würde man dann sicherlich noch Custom Logging einführen. Aber die Transaktion selber ist wie oben zu handhaben.


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Montag, 24. Februar 2014 12:15
  • Bei der DB1 handelt es sich um um eine Datenbank die lokal auf dem Gerät liegt, und bei der DB2 handelt es sich um eine Datenbak, die auf dem Hauptserver liegt.


    Montag, 24. Februar 2014 14:48
  • Ach so. Das war an dem Beispielcode nicht zu erkennen.

    Dort wird ja mit 3-part-Names gearbeitet.

    Wenn also noch der Server ins Spiel kommt (4-Part-Name), dann musst Du mit Distributed Transactions arbeiten

    BEGIN DISTRIBUTED TRANSACTION
    ...
    

    Hier beschrieben: msdn.microsoft.com/en-us/library/ms188386(v=sql.120).aspx

    Dafür muss der DTC-Dienst auch laufen.


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    • Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 25. Februar 2014 10:01
    • Als Antwort markiert Robbo1984 Mittwoch, 26. Februar 2014 10:10
    Montag, 24. Februar 2014 16:58