forked from ktaranov/sqlserver-kit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSave_Error_Log_To_Table.sql
More file actions
64 lines (51 loc) · 1.86 KB
/
Copy pathSave_Error_Log_To_Table.sql
File metadata and controls
64 lines (51 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
Original link: https://sqlstudies.com/2018/05/31/updated-query-to-view-data-in-the-error-log/
Author: Kenneth Fisher
*/
IF OBJECT_ID(N'tempdb..#LogInfo', 'U') IS NOT NULL DROP TABLE #LogInfo;
DECLARE @searchstring1 nvarchar(500) = '';
DECLARE @searchstring2 nvarchar(500) = '';
----------------------------------------------------------------------
-- This part of the code was found here:
-- https://ask.sqlservercentral.com/questions/99484/number-of-error-log-files.html
DECLARE @FileList AS TABLE (
subdirectory NVARCHAR(4000) NOT NULL
,DEPTH BIGINT NOT NULL
,[FILE] BIGINT NOT NULL
);
DECLARE @ErrorLog NVARCHAR(4000), @ErrorLogPath NVARCHAR(4000);
SELECT @ErrorLog = CAST(SERVERPROPERTY(N'errorlogfilename') AS NVARCHAR(4000));
SELECT @ErrorLogPath = SUBSTRING(@ErrorLog, 1, LEN(@ErrorLog) - CHARINDEX(N'\', REVERSE(@ErrorLog))) + N'\';
INSERT INTO @FileList
EXEC xp_dirtree @ErrorLogPath, 0, 1;
DECLARE @NumberOfLogfiles INT;
SET @NumberOfLogfiles = (SELECT COUNT(*) FROM @FileList WHERE [@FileList].subdirectory LIKE N'ERRORLOG%');
-- SELECT @NumberOfLogfiles;
----------------------------------------------------------------------
CREATE TABLE #LogInfo (
LogDate datetime,
ProcessInfo nvarchar(500),
ErrorText nvarchar(max));
DECLARE @p1 INT = 0;
WHILE @p1 < @NumberOfLogfiles
BEGIN
-- P1 is the file number starting at 0
DECLARE
@p2 INT = 1,
-- P2 1 for SQL logs, 2 for SQL Agent logs
@p3 NVARCHAR(255) = @searchstring1,
-- P3 is a value to search on
@p4 NVARCHAR(255) = @searchstring2
-- P4 is another search value
BEGIN TRY
INSERT INTO #LogInfo
EXEC sys.xp_readerrorlog @p1,@p2,@p3,@p4;
END TRY
BEGIN CATCH
PRINT 'Error occurred processing file ' + cast(@p1 as varchar(10));
END CATCH;
SET @p1 = @p1 + 1;
END;
SELECT * FROM #LogInfo
WHERE ProcessInfo NOT IN ('Backup','Logon')
ORDER BY LogDate DESC;