SQL Server Sessions und Connections. Was ist der Unterschied?

SQL Server Sessions und Connections. Was ist der Unterschied?

SQL Server Sessions und Connections. Was ist der Unterschied?

Vielfach wird in Unternehmen unter Administratoren häufig der Begriff Session aber auch der Begriff Connection verwendet. Gemeint ist damit eigentlich immer die konkrete Verbindung zwischen Client und SQL Server.

Es gibt aber einen Unterschied zwischen Connection und Session und diesen sollte man kennen, da viele Systeminformationen sich darauf beziehen.

Machen wir es kurz um den wesentlichen Unterschied hier herauszustellen.

Eine Connection meint immer die eigentliche physische Verbindung zwischen Client und SQL Server. Eine Session ist der Vorgang im SQL Server in dessen Kontext die entsprechenden Aufgaben erledigt werden. Eine Session ist quasi der gekapselte reservierte Bereich der mittels der sogenannten Session ID identifiziert wird in dem gearbeitet wird.

Eine Benutzerconnection ist demnach mit einer Session verbunden. Es gibt aber auch Sessions die keine Connection besitzen und das sind z.B. SQL Server interne Sessions. Diese benötigen keine Connection zu irgend jemanden.

Machen wir den Test.

Mit dem Kommando

select * from sys.dm_exec_connections

listen wir alle Connections auf und mit dem Kommando

select * from sys.dm_exec_sessions

alle Sessions.

Demzufolge kann über die Spalte session_id auch ein Join zwischen beiden Management Views gebildet werden um alle Connection’s mit ihrer zugehörigen Session anzuzeigen.

select * from sys.dm_exec_connections c inner join sys.dm_exec_sessions s on (c.session_id = s.session_id)

 

In der Regel gibt es zu jeder Connection meistens eine Session. Es ist aber auch möglich, das zu einer Connection mehrere Sessions existieren.

Eine Connection kann dann eben mehrere Sessions öffnen und damit arbeiten. Diese Möglichkeit besteht zum Beispiel bei MARS (Multiple Active Recordset),  gehört aber nicht zum Thema dieses Artikels.