Zum Inhalt springen

Uncommited Transactions


Mulenker

Empfohlene Beiträge

Hallo ,

ich habe ein Programm, das daten in eine mssql Datenbank schreibt. Leider weden höchstwahrscheinlich einige Transaktionen von diesem Programm nicht committed beim beenden. wenn ich nun die Datenbank mit osql und sp_attach_db öffne bekomme ich folgende Meldung:

20 transactions rolled forward in database 'xxx' (6).

0 transactions rolled back in database 'xxx' (6).

Wie kann ich herausfinden, dass es noch offene Transaktionen gibt, ohne diese 'forward' zu 'rollen' ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ,

ich habe ein Programm, das daten in eine mssql Datenbank schreibt.

Direkt oder via MSSQLServer??

Wird zu DB zu früh ausgehängt? (z.b. das ekelhafte Attachen beim c# Express)

Leider weden höchstwahrscheinlich einige Transaktionen von diesem Programm nicht committed beim beenden. wenn ich nun die Datenbank mit osql und sp_attach_db öffne bekomme ich folgende Meldung:

20 transactions rolled forward in database 'xxx' (6).

0 transactions rolled back in database 'xxx' (6).

Forwards gibts nur bei nem Server-Neustart - ergo:

- Alles wurde wohl committed (sonst würde er nen roll-back machen)

- SQLServer kam allerdings nicht dazu, alle Daten aus dem Transaction-Log in die reale DB reinzuschreiben ("hart" beendet, ausgehängt, etc.)

Wie kann ich herausfinden, dass es noch offene Transaktionen gibt, ohne diese 'forward' zu 'rollen' ???

Ehrlich gesagt: kein Plan..

Aber: Die Kommandos CHECKPOINT und SAVE TRANSACTION zwingen den SQL-Server zum flushen auf Disk. Evtl. das ausführen, bevor der SQL-Server heruntergefahren wird.

Näheres zum Transaction-Log unter Know the Transaction LOG - Part - 1 - B Esakkiappan's SQL Thoughts

Greets..

Ripper

Link zu diesem Kommentar
Auf anderen Seiten teilen

Direkt oder via MSSQLServer??

via MSSQLServer

Wird zu DB zu früh ausgehängt? (z.b. das ekelhafte Attachen beim c# Express)

Dieses Programm ist Standartsoftware und somit ist auch der Quellcode nicht zugängig.

Deswegen kann ich nur vermuten, dass die DB zu früh ausgehängt wird.

Aber: Die Kommandos CHECKPOINT und SAVE TRANSACTION zwingen den SQL-Server zum flushen auf Disk. Evtl. das ausführen, bevor der SQL-Server heruntergefahren wird.

Diese Kommandos bringen mich leider nicht weiter, da ich herausfinden muss ob etwas schiefgegangen ist.

Gibt eine Möglichkeit das aus dem Transactionlog zu lesen ?

Gruß

Mulenker

Link zu diesem Kommentar
Auf anderen Seiten teilen

via MSSQLServer

Warum musst du die dann erst attachen? Hängt die "StandarDsoft" die etwa aus? Was sacht das Log deines SQL-Servers (vieleicht verreissts den ja - und nur dann wäre das so wirklich dein Problem)

Dieses Programm ist Standartsoftware und somit ist auch der Quellcode nicht zugängig.

Deswegen kann ich nur vermuten, dass die DB zu früh ausgehängt wird.

If you ain't broke it - ain't fix it ;)

Gibt eine Möglichkeit das aus dem Transactionlog zu lesen ?

DBCC log

und

DBCC loginfo

gibts noch als undokumentierte Befehle.. aber das bringt dir nix:

Diese Kommandos bringen mich leider nicht weiter, da ich herausfinden muss ob etwas schiefgegangen ist.

Und wie bitte willst du das wirklich feststellen?

Da nicht quelloffen -> Du weisst eh nicht, was die Soft (evtl. falsch) macht und selbst wenn könntest du es nicht ändern.

Ergo: Sinnlos in der Software den Fehler zu suchen - entweder liegt's an eurer Umgebung (SQLServer) oder der "Standardsoft"-Hersteller hat 'nen Bock geschossen..

Dann: Knall's dem Hersteller vorn Latz, inkl. Bugreport..

Grüße

Ripper

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke nochmal für die Antworten, aber ich glaub ich hab mein Problem noch nicht richtig dargestellt.

Mir geht es weder darum die StandartSW zu fixen noch dem Hersteller einen vor den Latz zu knallen

Die Problemstellung:

Gegeben ist eine Datenbank bei der 20 Transaktionen nicht 'forward' ge-'rolled' sind.

Ich Muss nun herausfinden, ob diese Datenbank Transaktionen enthält die noch 'forward' ge-'rolled' werden müssen. Da ich die Datenbank Schreibgeschützt öffnen muss (nicht mit der StandartSW) werden dieTransaktionen auch nicht 'forward' ge-'rolled' und ich bekomm nix von den Änderungen in der Datenbank mit.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Grade entdeckt:

SQL Log Rescue - Undo for SQL Server

ist nen LogBrowser für's Transaction-Log.

Aber nochmal: Transaktionen, welche beim Einbinden 'forward' ge-'rolled' werden deuten auf einen Fehler bei deiner Standar-D-Software hin - Schreib nen Bugreport!

Grüße

Ripper

PS: Bitte keine "Stand-arT" mehr - das verursachtr bei mir Augenkrebs..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber nochmal: Transaktionen, welche beim Einbinden 'forward' ge-'rolled' werden deuten auf einen Fehler bei deiner Standar-D-Software hin - Schreib nen Bugreport!

Das war mir schon klar, ist auch nicht die Antwort auf meine Frage.

Trotzdem danke,

Gruß

Mulenker

PS Standartsoftware ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...