Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.