I have an MS Access 2003 mdb and mdw which is connected to a SQL server backend. The tables are linked using a system DSN. I have a trigger on a SQL back end table which inserts a record into another back end audit table on insert, update, and delete. This all works well, but the trigger is using system_user to get the person making the record change, and the table is just recording the username the DSN is setup to use when that change is made in the linked Access table. If the DSN is set to use the generic sql username ‘foo’ and the MDW is using the user specific name ‘bar’, the audit table on the backend if recording all changes by all users as the user ‘foo’. The users are logging in to the mdb with an mdw file, and I’d like to record the username from the mdw in the SQL backend. Is this at all possible?
Share
I bet @@spid in the trigger works because it is executed by the process doing the DML.
Just be aware that this may not always be reliable because sometimes Access opens additional connections without having any way of running your special code to log the user against the spid in use.
Update
Have you considered using the CONTEXT_INFO variable that is specific to each SQL Server session?
This may mean hitting a table behind the scenes anyway, but it’s surely going to be faster than doing it yourself.