Knowledge Base1967MSSQL Datenbank Anpassung | SET READ_COMMITTED_SNAPSHOT ON;
Da es in der Vergangenheit des öfteren zu Problemen (Deadlocks) im Zusammenhang mit MSSQL Datenbanken gekommen ist, haben wir eine Lösung zur Vorbeugung von Deadlocks und zur allgemeinen Verbesserung im Umgang mit der MSSQL Datenbank gefunden.

Folgender Beitrag kann ab der Intrexx-Version 7.0 angewandt werden.


Info von Microsoft:
https://msdn.microsoft.com/de-de/library/tcbchxcb(v=vs.110).aspx
Die MSSQL Datenbanken sind im Standard nicht optimal konfiguriert, so dass es bei vielen gleichzeitigen und lang andauernden Transaktionen, welche z.B. automatisiert von Prozessen durchgeführt werden, auf der Datenbank zu Deadlocks kommen kann. Dies kann je nach Prozess häufiger auftreten und daher ist die Anpassung generell vorbeugend zu empfehlen. Ab der kommenden Version wird diese Einstellung beim Anlegen eines Portals standardmäßig gesetzt werden.

Hintergrund:
Ein Kunde hatte auf Grund eines Prozesses mit sehr langer Ausführungszeit bereits bei wenigen Zugriffen auf die gleiche Datengruppe Fehler wegen Deadlocks auf der Datenbank erhalten. Mit der folgenden Anpassung konnten alle Deadlocks vermieden und der Prozess kann nun auch von mehreren Usern/Aktionen gleichzeitig genutzt werden.

Infos zur Anpassung:
Da es nicht möglich war, die Operationen des Prozesses zu beschleunigen bzw. in externe Prozesse auszulagern, haben wir eine Möglichkeit gesucht und gefunden, das Locking-Verhalten des SQL-Servers positiv zu beeinflussen. Bitte prüfen Sie dennoch, ob Ihr Prozess nicht zusätzlich optimiert werden kann.

Mit folgendem Schalter wird auf das Leseverhalten von Daten Einfluss genommen:
„Read operations under the read-committed isolation level are based on snapshot scans and do not acquire locks.“

Zunächst empfehlen wir Ihnen den aktuellen Status zu überprüfen, dazu können Sie folgenden SQL-Befehl absetzen.

Überprüfen der Einstellungen:
select name, is_read_committed_snapshot_on, snapshot_isolation_state, snapshot_isolation_state_desc from sys.databases
(siehe Bild 1)


Um die Einstellungen entsprechend zu aktivieren, geben Sie folgenden SQL-Befehl ab, lesen Sie bitte vorweg den unten stehenden Hinweis.

Befehl zur Anpassung:
ALTER DATABASE <DATENBANKNAME> SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE <DATENBANKNAME> SET READ_COMMITTED_SNAPSHOT ON
(siehe Bild 2)


Hinweis:
Es empfiehlt sich den Portaldienst von Intrexx und alle anderen Systeme mit Zugriff auf die Datenbank während der Abfrage zu beenden, um alle Connections auf die DB zu schließen. Solange Verbindungen auf die Datenbank geöffnet sind, wartet der Befehl und kann daher nicht abgeschlossen werden.

Bitte gehen Sie bei der Anpassung wie folgt vor:
- Beenden Sie alle Intrexx-Portale welche auf die Datenbank zugreifen.
- Beenden Sie alle eventuellen Zugriffe von Fremdsystemen welche auf die Datenbank zugreifen.
- Prüfen Sie im SQL Server (SQL Server Management Studio) ob es auf der Datenbank offene Verbindungen gibt. Diese müssen beendet werden.
- Setzten Sie den Datenbankbefehl ab.
- Prüfen Sie ob der Datenbankbefehl übernommen wurde.
- Starten Sie die Systeme.
Anhang:

Intrexx Version:

  • 8.0
  • 7.0
Details:

Kategorie:Setup
Betriebssystem:Windows Server
Datenbank:MSSQL
Stand von:08-12-2017