Ansicht
Dokumentation

ABENDB_CONNECTIONS_TRANS - DB CONNECTIONS TRANS

ABENDB_CONNECTIONS_TRANS - DB CONNECTIONS TRANS

CPI1466 during Backup   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Datenbankverbindungen und Transaktionen

Jede aktive Datenbankverbindung bildet einen eigenen Transaktionskontext bzw. ist mit eigenen Datenbank-LUWs verknüpft. Das heißt, dass Datenbankänderungen auf einer Verbindung unabhängig von den Veränderungen auf anderen Datenbankverbindungen festgeschrieben oder verworfen werden können. So können beispielsweise auf einer Sekundärverbindung Protokolldaten gespeichert und festgeschrieben werden, ohne die Datenbank-LUW der Standardverbindung zu beeinflussen.

Datenbankänderungen können wie folgt gezielt für Datenbankverbindungen festgeschrieben oder verworfen werden:

  • Das implizite Inaktivieren einer Datenbankverbindung am Ende einer internen Sitzung löst einen Datenbank-Commit aus.
  • Das explizite Schließen einer Datenbankverbindung in Native SQL löst einen Datenbank-Rollback aus.

Dazu stehen sowohl die Anweisungen COMMIT WORK und ROLLBACK WORK als auch die impliziten Datenbank-Commits und Databank-Rollbacks zur Verfügung, die auf alle aktiven Verbindungen wirken.

Das Festschreiben oder Verwerfen von Datenbankänderungen einer Sekundär- oder Serviceverbindung bedeutet immer auch, dass die Verbindung in den Zustand inaktiv versetzt wird. Eine solcherart inaktivierte Verbindung kann in der gleichen internen Sitzung sowohl von als auch von Native SQL oder AMDP aber weiter verwendet werden, ohne dass sie explizit geöffnet werden muss. Die erste Verwendung einer inaktiven Sekundär- oder Serviceverbindung, die in der aktuellen internen Sitzung bereits aktiv war, setzt diese wieder auf den Zustand aktiv und öffnet dabei eine neue Datenbank-LUW.

Warnung

Äußerste Vorsicht ist geboten, wenn SQL-Anweisungen SET TRANSACTION zum Setzen des Transaktionsverhaltens der aktuellen Datenbankverbindung verwendet werden. Das mit diesen Anweisungen gesetzte Transaktionsverhalten bleibt über die aktuelle Datenbank-LUW hinweg vorhanden, was bei der Wiederverwendung der Datenbankverbindung zu unvorhergesehenen oder kritischen Situationen führen kann. Es muss dafür gesorgt werden, dass das Standardverhalten vor dem Ende der Datenbank-LUW wiederhergestellt wird. Bei einem Zugriff auf die SAP-HANA-Datenbank müssen statt der direkten Verwendung der SQL-Anweisungen SET TRANSACTION spezielle Methoden für das Setzen des Transaktionsverhaltens aufgerufen werden. In diesem Fall wird am Ende der Datenbank-LUW automatisch das Standardverhalten wiederhergestellt. Für andere Datenbankplattformen findet derzeit kein automatisches Zurücksetzen statt.

Hinweise

  • Alle -, Native-SQL- oder AMDP-Zugriffe auf eine gemeinsam verwendete aktive Datenbankverbindung einer internen Sitzung arbeiten in der gleichen Datenbank-LUW.
  • Die statische Native-SQL-Anweisung SET CONNECTION hat keinen Einfluss auf die Datenbank-LUWs der beteiligten Verbindungen.
  • Da Sekundär- und Serviceverbindungen einer internen Sitzung nicht in aufgerufenen Programmen verwendet werden können, aktiviert ein aufgerufenes Programm auch bei Verwendung des gleichen Verbindungsnamens immer eine eigene Verbindung und damit eine eigene Datenbank-LUW.
  • Mit Sekundärverbindungen und insbesondere mit Serviceverbindungen können unabhängige Datenbank-LUWs auf einer Sekundärdatenbank oder der Standarddatenbank verwirklicht werden. Dabei ist darauf zu achten, dass es nicht zu Sperrsituationen kommt.
  • Durch das Arbeiten mit mehreren Datenbankverbindungen, also unabhängigen Datenbank-LUWs, kann es zu Sperrsituationen kommen, an denen nur ein Workprozess beteiligt ist: ein Programm ändert eine Datenbankzeile auf der ersten Verbindung, und versucht dieselbe Zeile auf einer zweiten Verbindung ebenfalls zu ändern. Das führt dazu, dass das Programm auf die Sperre der ersten Datenbank-LUW wartet, ohne dass diese erste Datenbank-LUW je weiterlaufen könnte. In dieser Situation hilft nur das Beenden des Workprozesses, was für Dialogprozesse automatisch erfolgt, für Batch-Prozesse aber von Hand erfolgen muss. Man sollte es also vermeiden, dieselbe Tabelle innerhalb eines Programms über mehrere Datenbankverbindungen zu verändern.

Beispiel

Ohne die Anweisung COMMIT CONNECTION default würde der folgende Programmabschnitt zu einer Sperrsituation führen, da über die Standardverbindung (hier ) und über eine Serviceverbindung (hier Native SQL) in unabhängigen Datenbank-LUWs auf die gleiche Zeile einer Datenbanktabelle zugegriffen würde.






General Data in Customer Master   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7557 Date: 20240606 Time: 180022     sap01-206 ( 131 ms )