How to Archive your SQL Errorlogs into a Table

Chris Skorlinski
Microsoft SQL Server Escalation Services

Have you noticed your SQL Server errorlogs taking up a lot of disk space?  Ever wonder what was logged a few weeks ago, but the logs have already rolled over?  Why not create a SQL Agent job and archive your SQL Agent and SQL errorlogs into a table then recycle the error logs using the SQL statements below.

--Create Tables statements only need to be executed once
IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MS_SQLerrorlog]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[MS_SQLerrorlog](
    [LogDate] [datetime] NULL,
    [ProcessInfo] [varchar](10) NULL,
    [Text] [varchar](max) NULL
) ON [PRIMARY]
END
GO

IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MS_SQLAgentlog]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[MS_SQLAgentlog](
    [LogDate] [datetime] NULL,
    [ProcessInfo] [varchar](10) NULL,
    [Text] [varchar](max) NULL
) ON [PRIMARY]
END
GO


--Save current SQL Server Errorlog
INSERT INTO MS_SQLerrorlog
      EXEC ('sp_readerrorlog')

Go 
Exec msdb.dbo.sp_cycle_errorlog
Go

--Save current SQL Agent log
INSERT INTO MS_SQLAgentlog
    EXEC ('sp_readerrorlog -1, 2')
Go
Exec msdb.dbo.sp_cycle_agent_errorlog 
Go