[Gelöst] SQL-Berechtigung Tabelle "Session"

11. März 2015 08:20

Guten Morgen Leute,

ich habe ein Berechtigungs-Problem mit der Tabelle "Session" in einer SQL-Umgebung.

Es geht um eine Dynamics NAV 2009 Umgebung, letzte Build No., nur Classic Client, welche neu auf SQL 2012 läuft.
Mit der native Datenbank konnte man unter Datei->Datenbank->Information die Anzahl aktiven Sessions sehen.
Wenn man SUPER Rechte hatte, konnte man auch Sessions löschen / beenden.

Nach der Umstellung von der native Datenbank auf die SQL-Datenbank funktionierte dies aber nicht mehr.
Auch der verantwortliche Benutzer (mit SUPER Rechten) sah nur seine eigene Session und nicht alle aktiven Sessions.
Da dieser Benutzer auch Sessions "killen" darf, gab ich ihm auf dem SQL-Server die "Sysadmin" Rechte. Damit konnte
er nun wieder alle Sessions sehen und bei Bedarf auch einzelne "killen".

Das Problem ist aber, dass wir in ein paar Objekten auf die Tabelle Session zugreifen. Dabei wird geprüft ob noch andere Sessions aktiv sind.
Dies funktioniert nun aber nur beim oben erwähnten administrativen Benutzer mit "Sysadmin" Rechten.
Bei allen anderen Benutzern wird natürlich immer nur die eigene Session im Zugriff sein.

Es wäre nun natürlich einfach aber sträflich, allen Benutzern "Sysadmin" Rechte zuzuteilen...

Nach langem Suchen habe ich Folgendes gefunden:

Der NAV-Client zeigt in der Übersicht der aktiven Sessions nur die eigene Session an
http://www.comporsys.de/dynamics-nav-blog/der-nav-client-zeigt-in-der-uebersicht-der-aktiven-sessions-nur-die-eigene-session-an/

Mit der Ausführung von "DBCC TRACEON(4616,-1)" löst dies zwar das Problem.
Aber erstens müsste ich das Aktivieren des Trace im Startup des SQL-Servers hinzufügen, da es bei einem Neustart wieder deaktiviert ist.
Und zweitens weiss ich nicht, ob es nicht noch eine viel bessere Lösung gibt?

Habt ihr mir da einen Tipp?

Vielen Dank, Beno
Zuletzt geändert von beno am 11. März 2015 17:50, insgesamt 1-mal geändert.

Re: SQL-Berechtigung Tabelle "Session"

11. März 2015 09:56

Hallo,

wir haben auch "ewig" nach einer Lösung für dieses Problem gesucht. Wir wollten verhindern, dass sich ein User 2x mit einem Client anmelden kann (bzw. maximal mit der Anzahl der Sessions gemäß Tabelle User Setup)

Die Lösung war auch das Setzen dieses Traceflags zu den Startparametern des SQL Servers.

Eine andere Lösung außer Sysadmins zu verteilen hatten wir damals auch nicht gefunden.

gruß

SQL-Berechtigung Tabelle "Session"

11. März 2015 17:50

Hallo Jörg,

vielen Dank! Ich habe es nun so eingerichtet und es funktioniert einwandfrei!

Viele Grüsse, Beno

Re: [Gelöst] SQL-Berechtigung Tabelle "Session"

11. März 2015 20:25

Ich meint zwar, dass das hier auch reicht:
Code:
GRANT VIEW SERVER STATE TO Public


http://www.mibuso.com/forum/viewtopic.php?t=42882

Gruss

Re: [Gelöst] SQL-Berechtigung Tabelle "Session"

12. März 2015 08:45

Hallo Martin,

Nein, das reicht leider nicht aus!

Mit der Berechtigung

Code:
GRANT VIEW SERVER STATE TO Public

kannst Du zwar beim Anmelden den Server und die Datenbank auswählen.
Sofern Du auch die Berechtigung für "Datei->Datenbank->Information" hast, kannst Du auch die Anzahl aktive Sessions sehen.
Aber... wenn Du nicht Sysadmin oder db_owner bist, dann siehst Du nur Deine eigene Session. Die anderen kannst Du nicht sehen.
Wenn Du nun in der Applikation alle Session lesen möchtest, musst Du den Trace 4616 setzen, sonst liest Du nur gerade Deine eigene Session.
Auf die anderen Sessions hast Du keinen Zugriff.

Code:
DBCC TRACEON(4616,-1)


Gruss, Beno