Benutzer mit den meisten Antworten
Transaktionssicher

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
Antworten
-
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
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 -
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