While testing on SQL Server 2019, it looks like that
process_login_finish event is only fired when a new session is established.
I have a .NET application that I've set
Application Name=My Test App in the connection string. It connects to a database (
database_id 7 in this case) and runs queries. When I start this app up for the first time, I can check the XE and
FROM sys.dm_exec_sessions s
WHERE s.program_name = 'My Test App';
As you can see, the event fired once, and my app has established one session on the server.
The connection pooling feature built into the SqlClient driver means that, if the application isn't under very much load, the same session will continue to be used. Thus I would rarely see this
process_login_finish event fire.
If I cause the app to run a bunch more queries, eventually it will create more connections and add them to the pool, and that event will fire each time this occurs:
As you can see, eventually
process_login_finish fired two more times, and I now have three sessions established from my app.
A certain amount of inactivity can cause the session to go away, in which case the next time the app connects, we'll see
process_login_finish fire again.
Note: in my testing above, I never saw the
login_event event fire, although it was included in my XE session definition.