Verwendete Datenbankanmeldung

Wir müssen hier unbedingt zwischen der Datenbankserver-Anmeldung und der combit CRM Benutzeranmeldung sauber trennen.

Datenbankserver-Anmeldung: kann ein fester (ggf. auch komplett „kryptischer“) SQL Server Benutzer sein, kann Windows Authentifizierung sein. Hat nichts mit combit CRM Benutzerdaten („combit CRM Benutzername“) zu tun.

combit CRM Benutzeranmeldung: Ist die Anmeldung des Anwenders in der combit Software (ggf. vollautomatisch ohne Kennworteingabe über eine in der Benutzerverwaltung hergestellte Assoziation zw. einem Windows-Benutzernamen und einem cRM-Benutzerkonto).

Wenn nun im Datenbankserver-Kontext (z.B. Trigger, stored procedure o.ä.) der cRM-Benutzername für den aktuellen Kontext der „SQL Server Session“ ermittelt werden soll, dann geht dies über folgendes T-SQL snippet:

SELECT @username = Substring("program_name", 0, PATINDEX('%@%', "program_name"))
FROM sys.dm_exec_sessions
WHERE "session_id" = @@SPID AND PATINDEX('%@%', "program_name") != 0

Dieser Wert kann dann im aktiven Kontext weiterverarbeitet werden, d.h. ggf. beim „Hinüberschieben“ von Daten an den Linked-Server als Feldinhalt direkt schon gesetzt werden.

Im Kontext des Linked-Servers kann das Snippet nicht verwendet werden, weil der ja seine eigene sys.dm_exec_sessions hat, und diese nicht durch den combit CRM Client-Datenbankanmeldevorgang mit den cRM-Benutzerdaten (siehe Rahmen) präpariert wurde - der program_name wird dort nicht entsprechend gesetzt.

Ich hoffe, das hilft weiter! :slight_smile: