Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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' ???

Geschrieben
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

Geschrieben
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

Geschrieben
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

Geschrieben

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.

Geschrieben

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 ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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