USE master;
GO
SET NOCOUNT ON;
DECLARE @log_type INT;
DECLARE @log_depth INT;
DECLARE @Search1 VARCHAR(200);
DECLARE @Search2 VARCHAR(200);
SET @log_type = 1; -- 1=error log, 2=agent log
SET @log_depth = 1; -- max log + 1 to search
SET @Search1 = '';
SET @Search2 = '';
DECLARE @logfiles TABLE (
fileno INT NULL
, filedate DATETIME NULL
, filesize INT NULL
);
DECLARE @log TABLE (
LogDate DATETIME NULL
, ErrorLevel VARCHAR(100) NULL
, LogText VARCHAR(max) NULL
);
INSERT INTO @logfiles
EXEC sp_enumerrorlogs
@p1 = @log_type
;
DECLARE lfcur CURSOR LOCAL READ_ONLY FORWARD_ONLY
FOR
SELECT fileno
FROM @logfiles
WHERE fileno < @log_depth
ORDER BY fileno
;
OPEN lfcur;
DECLARE @cur_fileno INT;
FETCH NEXT
FROM lfcur
INTO @cur_fileno
;
WHILE (@@FETCH_STATUS = 0)
BEGIN
INSERT INTO @log
EXEC sp_readerrorlog
@p1 = @cur_fileno
, @p2 = @log_type
, @p3 = @Search1
, @p4 = @Search2
;
FETCH NEXT
FROM lfcur
INTO @cur_fileno
;
END;
CLOSE lfcur;
DEALLOCATE lfcur;
SELECT LogDate
, ErrorLevel
, LogText
FROM @log
ORDER BY LogDate DESC
;
GO
1) Run Profiler, connect to your database.
2) In the Trace Properties dialog, de-select everything except "Audit Login"
3) Click on "Column Filters" (lower-right corner)
4) Click on "LoginName" in the left-hand list
5) Expand (click on the "+") by "Like"
6) In the empty field, enter in the username you want to track (make sure to include the domain if its an AD user)
7) Click "OK"
8) Before 9AM, Click "Run"
9) After 11AM, click on the red "stop" square in the main window.
Now you can just count the lines. I usually do a "File" -> "Save As" -> "Trace Table" and then you can do SELECT() queries on the trace. Like COUNT(*), or limit by hostname or time period (like 9:00am to 9:30am), etc.