Veröffentlicht 29. September 200816 j 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' ???
29. September 200816 j 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
30. September 200816 j 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
30. September 200816 j 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
1. Oktober 200816 j 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.
1. Oktober 200816 j 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..
1. Oktober 200816 j PS: Bitte keine "Stand-arT" mehr - das verursachtr bei mir Augenkrebs.. Wieso? Was hast Du denn gegen eine Standarte? Dim
1. Oktober 200816 j 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 Konto oder melde dich an, um einen Kommentar zu schreiben.