Uso uno script in merito che appunto popola al login una tabella di utenti_connessi e la cancella, al logout ma anche dopo 15 minuti di inattività dell'utente.

Eccolo:

codice:
<%
'se la sessione è scaduta allora utilizza il cookie per IdUtente e username
IdUtente = Session("Id_utente")
settato = Session("username")
Admin = Session("Flag_admin")
if Admin = "N" then
   Admin = "-"
end if

'permette di recuperare l'esatta sezione 
'in cui l'utente si trova in un determinato momento
if IdUtente <> "" and settato <> "" then
   mappatura = Session("mappatura")
   'se la provenienza non è valorizzata 
   'allora l'utente è sulla Home Page 
   if mappatura = "" then
	  mappatura = "home_page"
   end if
end if
'response.write(dove)   

'Funzione per la trasformazione della data a seconda dell'LCID
'1 parametro la data formato testo o formato data, 
'2 nNamedFormat sono i formati data accettati dalla funzione nel motore vbscript FormatDateTime
'3 LCID (i + usati sono 1033 per le date in inglese e 1040 per la data in italiano
Function FormatDateTimeLCID (str, nNamedFormat, nLCID)				
	dim strRet, nOldLCID								
	strRet = str								
	If (nLCID > -1) Then nOldLCID = Session.LCID					
	On Error Resume Next							
	If (nLCID > -1) Then  Session.LCID = nLCID						
	If ((nLCID < 0) Or (Session.LCID = nLCID)) Then	strRet = FormatDateTime(str, nNamedFormat)
	If (nLCID > -1) Then Session.LCID = nOldLCID
	FormatDateTimeLCID = strRet							
End Function

'apro la connessione
'set connessioneLett = server.createobject("adodb.connection")
'connessioneLett.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/InterMania.mdb")

'solo se l'utente è loggato eseguo lettura preventiva ed eventualmente insert
if len(IdUtente) > 0 then

   sql= "Select * from utenti_connessi where Id_utente_connesso = " & IdUtente
   Set objrs = Server.CreateObject("ADODB.Recordset")
   objrs.Open sql, objConn 
   				   'connessioneLett

   if objrs.eof then

	   sql = "INSERT INTO utenti_connessi(Id_utente_connesso, Utente_connesso, Data_connessione, Amministratore, Mappatura) " &_ 
	   		 "VALUES(" & IdUtente & ", '" & settato & "', Now(), '" & Admin & "', '" & mappatura & "')"
  
   	   objConn.execute(sql)
	   'connessioneLett.execute(sql)  
   end if

   objRs.Close
   set objrs = nothing

end if

'se lo trova, fa l'update solo se l'utente è loggato
if len(IdUtente) > 0 then
	sql = "UPDATE Utenti_connessi set Data_connessione = Now(), " & _
		  " Mappatura = '" & mappatura & "'" & _
		  " WHERE Id_utente_connesso = " & IdUtente 
	objConn.execute(sql)
	'connessioneLett.execute(sql)
end if

'cancello l'utente dalla tabella degli utenti connessi (impostando data e ora nel formato corretto)
differenza = dateadd("n", -15, now())
dataInvertitaInglese = FormatDateTimeLCiD(differenza,2,1033)
soloOrario = FormatDateTimeLCiD(differenza,3,1040)
strSQL = "DELETE * FROM Utenti_connessi WHERE Data_connessione < #" & dataInvertitaInglese & " " & soloOrario & "#"
objConn.execute(strSQL)
'connessioneLett.execute(strSQL)
'connessioneLett.close
'set connessioneLett = nothing
%>
E' un esempio adatto alle mie esigenze, ma con qualche ritocco va bene anche per te.
La parte in grassetto è quella che ti esegue la DELETE senza il logout.