Darryl Collins
Darryl.Collins at coles.com.au
Sun Jul 12 19:54:23 CDT 2009
Dan, I use this, which can be called from anywhere from the Access FE - usually on the startup/Exit form is sensible. AddAuditEvent ("Log Off - v" & strAppVersion) and / or AddAuditEvent ("Log On - v" & strAppVersion) '-------------- Code Start -------------------- Option Compare Database Option Explicit Public Sub AddAuditEvent(strMsg As String) '***********************************************' ' ' ' This Procedure handles all audit events for ' ' this application. It logs to the audit ' ' any string passed to it from anywhere ' ' within the application. ' ' ' ' This function automatically adds the ' ' username, machine name and timestamp ' ' to the audit record ' ' ' ' Created by Beny Aycardo ' ' Started on 23 March 2006 ' ' ' '***********************************************' Dim sql As String Dim cnn As ADODB.Connection On Error GoTo ErrHandler Set cnn = New ADODB.Connection 'Clean up the audit message string so it can be passed to the 'stored Procedure strMsg = Replace(strMsg, "'", "") 'Add a new record to the error log table 'craft the call to the stored procedure sql = "stprAddAuditLog " & _ "'" & GetUserNameAPI() & "'" & ", " & _ "'" & GetComputerNameAPI() & "'" & ", " & _ "'" & strMsg & "'" & ", " & _ "'" & strAuditTable & "'" 'Debug.Print sql cnn.Open DbADOConStr cnn.Execute (sql) ExitHere: On Error Resume Next cnn.Close Set cnn = Nothing Exit Sub ErrHandler: strErrMsg = "ModAudit.AddAuditEvent " strErrMsg = strErrMsg & Err.Number & " - " & Err.Description & vbCrLf & vbCrLf ErrHandle (strErrMsg) Resume ExitHere End Sub '---------------Code End-------------------------- '------------ SQL SERVER SPROC--------------------- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[stprAddAuditLog]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[stprAddAuditLog] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO /* This Stored Procedure adds a new record to the Audit Log table. */ CREATE PROCEDURE [dbo].[stprAddAuditLog] @UserName NVARCHAR(12), -- User Name @MachineName NVARCHAR(12), -- Machine Name @AuditMsg NVARCHAR(1500), -- Audit Message @AuditTable NVARCHAR(100) -- Destination Audit Table Name AS SET NOCOUNT ON DECLARE @SQL NVARCHAR(4000) SELECT @SQL = 'INSERT INTO ' + @AuditTable SELECT @SQL = @SQL + ' (UserName,MachineName,AuditMsg) VALUES (' + '''' SELECT @SQL = @SQL + @UserName + '''' + ',' + '''' SELECT @SQL = @SQL + @MachineName + '''' + ',' + '''' SELECT @SQL = @SQL + @AuditMsg + '''' + ')' EXECUTE (@SQL) SET QUOTED_IDENTIFIER OFF GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO '-------- END SPROC --------------------- -----Original Message----- From: dba-sqlserver-bounces at databaseadvisors.com [mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Dan Waters Sent: Saturday, 11 July 2009 12:47 AM To: SQL Server List Subject: [dba-SQLServer] Determining Logged in Users? If I have multiple Access FE's / one SQL BE, and I'm not using Access's username/password method, what can I do to see who is logged in to database? I'll be using ODBC table links to the BE. Does SQL keep track of users who are connected? How could I reach that list? Thanks! Dan _______________________________________________ dba-SQLServer mailing list dba-SQLServer at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-sqlserver http://www.databaseadvisors.com This email and any attachments may contain privileged and confidential information and are intended for the named addressee only. If you have received this e-mail in error, please notify the sender and delete this e-mail immediately. Any confidentiality, privilege or copyright is not waived or lost because this e-mail has been sent to you in error. It is your responsibility to check this e-mail and any attachments for viruses. No warranty is made that this material is free from computer virus or any other defect or error. Any loss/damage incurred by using this material is not the sender's responsibility. The sender's entire liability will be limited to resupplying the material.