Ingenious Guide to View Log File of SQL Server
Microsoft SQL Server application is one of the biggest waves in the relational database management system and handles huge database in a well-structured manner.
But, Digital Crimes Can Takes Place In SQL Server Too!!!!
Nowadays, Ex-employees or hackers intentionally modifies the values of databases in order to damage the organization assets. And it becomes difficult to analyze or examine who is the culprit manually. As a result, the Organizations run into big trouble.
Hold On!! There Is A Good News
In SQL Server, there is a transaction Log file that keep records of all transactions & modifications in database executed on a database in a Microsoft SQL Server. By reading the Log file, one can easily check who deleted data from table in SQL Server database. Plus, it is used by forensic investigator to examine SQL Server Transaction Log and view & check every log detail in a detailed manner. In short, with SQL Log file, it becomes easy to find out which query performed on which table at what time.
Here, we are going to answer how to view log file of SQL Server by using various workarounds. Just go through this article once and understand how to open or read transaction log file in Microsoft SQL Server 2017 / 2016 / 2014 / 2012 / 2008 / 2008 R2 / 2005.
Moreover, if user want to restore the deleted query from a log file, then they can go through this blog – How to Recover Data from Log file in SQL Server – A Complete Guide .
Methods Use For How to View Transaction Log File of SQL Server
In the following section, you will understand how to open, check and read transaction file to retrieve information about the data which had been altered. So, let’s get started!!
#Approach 1: Use Log File Viewer in SQL Server Management Studio
Basically, this method exclusively used to open and view the information about following logs in SSMS:
- Audit Collection
- Database Mail
- Job History
- Data Collection
- SQL Server
- SQL Server Agent
- Windows Events
Its prime function of Log File Viewer is to provide the report of activities taken place in SQL Server Management Studio. In fact, one can open the Log File Viewer wizard in different ways on the basis of information that you want to check. Now, go through the instructions to view log details in SQL Server.
How to View Log File of SQL Server Via. Log File Viewer
Step 1: Open Microsoft SQL Server Management Studio application. Here, we are using SQL Server 2014 environment for reading SQL Server Error Log.

Step 2: Connect to Server windows pops-up. Here, you need to select the Server Name and Type of Authentication. Afterward, click on Connect.

Step 3: In Object Explorer, go to Management as shown in the screenshot to examine or read log file of SQL Server 2014.

Step 4: Now, move to SQL Server Logs option.

Step 5: Now, Right-click on SQL Server Logs and select View >> SQL Server Log sequentially.

Step 6: All the Log summary displayed on Log File Viewer window. Here, you can select other logs such as SQL Server Agent , Database Mail from the left panel to check its information too.

#Approach 2: View Log File of SQL Server Via. Undocumented fn_dblog()
Originally, the function fn_dblog() is used to extract data from Transaction file of SQL Server for forensic purposes to analyze every log event performed on the table. So, let’s check out how to read transaction log file in Microsoft SQL Server 2017 / 2016 / 2014 / 2012 / 2008 / 2008 R2 / 2005 editions.
Steps to View Log File in SQL Server Using Fn_dblog()
Step 1: We have a table named as ‘Employee’. So, first view the values of the table using the following T-SQL.
Select * from employee.

Step 2: Afterward, alter the table data using update command. For this, execute the query;
Update employee set department ='IT' where emp_name = 'jeevan'

Step 3: Again, view the table values using the Select Query. Now, you can see a modified table.

Step 4: Run the fn_dblog function according to the need. Here, we execute the query to check out the time when update operation was executed.
Select [Begin Time], [Transaction Name] from fn_dblog(null , null) where [Transaction Name] = ‘Update’

Step 5: In a situation, when you want to analyze all the logs such as Delete etc. , then run the following T-SQL query.
Select [Begin Time], [Transaction Name] from fn_dblog(null, null)
However, there are some consequences attached with fn_dblog(). Actually, this function only provide the time of the query when it was committed instead of which data entry gets affected. Due to which, it becomes cumbersome to find out which table data get altered. This problem is overcome with the third technique where user can view the log file of SQL Server without any hassle. Apart from this, both the described technique can run in SQL Server Management Studio only. You cannot read a Transaction Log File in offline environment with Log File Viewer and Fn_dblog().
#Approach 3: Use Smart Solution to Analyze Transaction File Easily
To get exact information from SQL Log File, take the help of SysTools SQL Log Reader Software. With the help of this software, user can scan and analyze T-log file in human readable format. However, the tool works in Online as well as Offline environment. User can get the information like Transaction , Login Name , Time , Table Name , Query . It is a best software solution that answers the question – how to read SQL Server Transaction Log file.
Download Free SQL Log Analyzer
Related : How to Fix Log File Corruption – Step-By-Step Guide
In fact, after viewing the log file of SQL Server, user can export the query in Live SQL Server database environment , SQL Compatible Scripts , and in CSV format. Moreover , the software can read Transaction log file of every SQL Server edition.
That’s all about on how to View Log file of SQL Server. Now, go through the methods and opt the best that suitable for you and examine SQL Server Transaction Log file.
Frequently Asked Questions:-
How to open SQL Server database Transaction Log file (.ldf) in readable format?
Try SQL Log Analyzer tool to easily scan and read the Transaction .ldf file records.
How to view SQL Log file in SSMS?
Use Fn_dblog() function to read the details of transaction in SQL Server.
Can I read log file of SQL Server 2008?
With the help of SQL Log Viewer, one can read .ldf file and view Transaction, Transaction time, Table name and Query of Microsoft SQL Server 2017, 2016, 2014, 2012, 2008 and SQL Server 2005
Is it possible to examine SQL Transaction Log file?
Yes, with the help of mentioned workaround, one can easily examine SQL LDF file.
Пересказ статьи Rajendra Gupta. How to manage SQL Server logs effectively
В статье дается обзор журналов SQL Server для управления и устранения неполадок на сервере.
Введение
Журналы являются лучшим средством администратора баз данных при решении любых проблем. Эти проблемы могут быть связаны с конфигурацией сервера, запуском, восстановлением, производительностью, флагами трассировки, тупиковыми ситуациями, вводом-выводом или задержками. Предположим, например, что ваш экземпляр SQL Server перезапускается по непонятным причинам, и после перезапуска службы SQL работают, однако ваше приложение не имеет доступа к базе данных. Таким образом, для исследования проблемы вам нужно заглянуть в последний журнал SQL Server, чтобы проконтролировать процесс восстановления базы данных и узнать оценку времени его завершения.
Администратор базы данных может также сконфигурировать SQL Server для выполнения дополнительных записей в журналы ошибок. Например, мы можем включить флаг трассировки для захвата информации о тупиковых ситуациях. DBA должен регулярно просматривать эти журналы в поисках потенциальных проблем. Вы можете обнаружить в журналах такую информацию, как сбой резервного копирования, ошибки входа, ошибки ввода-вывода. Эти журналы ошибок являются отличным средством для обнаружения существующих и потенциальных проблем в экземплярах SQL Server.
Журналы SQL Server известны как SQL Server Error logs. Журналы ошибок содержат информационные сообщения, предупреждения и сообщения о критичных ошибках. Вы можете просматривать некоторые из этих журналов также в просмотрщике событий Windows. Однако рекомендуется использовать журналы SQL Server для получения подробной информации.
Журналы SQL Server и их местонахождение
Если вы подключены к экземпляру SQL Server в SSMS, перейдите к Management -> SQL Server Logs. Как показано ниже, имеется текущий журнал и шесть архивных журналов (Archive#1 — Archive #6).

Метод 1: Использование расширенной процедуры xp_readerrorlog
Текущие журналы являются самыми последними файлами журнала ошибок, и вы можете использовать их для просмотра недавней деятельности с момента запуска SQL Server или ручного перезапуска файла журнала. Журнал ошибок SQL Server является текстовым файлом, хранящимся в каталоге журналов экземпляра SQL Server. Вы можете использовать расширенную процедуру xp_readerrorlog для нахождения текущего местоположения журнала ошибок.
USE master
GO
xp_readerrorlog 0, 1, N'Logging SQL Server messages', NULL, NULL,NULL
GO
Этот запрос имеет следующие параметры:
- Файл журнала ошибок: значение 0 для текущего, 1 для Archive#1, 2 для Archive #2.
- Тип файла журнала: значение 0 для журнала ошибок SQL Server, 1 для агента SQL Server.
- Строка поиска 1
- Строка поиска 2
- Время от
- Время до
- Сортировка результатов — по возрастанию (N’ASC) или по убыванию (N’Desc)
Для моего демонстрационного экземпляра файл журнала ошибок находится в папке C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLLogERRORLOG.

Метод 2: Использование функции SERVERPROPERTY()
Мы можем использовать в запросе функцию SERVERPROPERTY, и также определить местонахождение SQL Server ERRORLOG.
SELECT SERVERPROPERTY('ErrorLogFileName') AS 'Error log location'

Метод 3: использование менеджера конфигурации SQL Server
Откройте SQL Server Configuration Manager и посмотрите параметры запуска. Местоположение файлов журнала указывается с помощью переключателя -e.

Вы можете развернуть каталог журналов и просмотреть текущий или архивные файлы журнала. Эти журналы ошибок можно открыть в текстовом редакторе, таком как Notepad или Visual Studio Code.

Конфигурирование числа файлов журнала SQL Server и их размеров
По умолчанию SQL Server поддерживает текущий и 6 архивных файлов журнала. Чтобы уточнить значение, выполните щелчок правой кнопкой на папке SQL Server Logs в SSMS и выберите Configure.

SQL Server записывает всю информацию в текущий файл журнала, независимо от размера файла журнала. В загруженной системе или в экземпляре с большим количеством ошибок вам может быть сложно просмотреть файл журнала в SSMS. SQL Server создает новый файл журнала и архивирует текущий файл в следующих случях.
- При перезапуске службы SQL.
- При перезагрузке журнала ошибок вручную.
Однако если вы часто перезапускаете серверы по неизвестным причинам, то можете потерять все исторические данные в архивных журналах, поскольку их поддерживается только шесть. Поскольку ошибки содержат ценную информацию, которая может помочь в решении проблем, вы можете не захотеть потерять эти важные данные. Тогда, возможно, вы захотите сохранять файлы журнала производственной системы в течение недели или даже месяца.
SQL Server позволяет сконфигурировать от 6 до 99 файлов журнала ошибок. Вы не можете указать значение меньше шести, поскольку в любом случае будет поддерживаться шесть архивных журналов ошибок.
Для изменения значения по умолчанию числа файлов журнала ошибок поставьте галочку в поле с названием “Limit the number of error log files before they are recycled”. Например, следующий скриншот показывает максимальное число файлов журнала ошибок, равное 30.

Это эквивалентно выполнению скрипта T-SQL, который использует расширенную хранимую процедуру и обновляет значение регистра.
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'NumErrorLogs', REG_DWORD, 30
GO
Замечание. Следует перезапустить службу SQL, чтобы изменения вступили в силу.
Как утверждалось ранее, по умолчанию размер журнала ошибок не ограничен. Например, если вы не запускаете SQL Server в течение длительного периода и вручную не перегружаете файлы журнала, этот файл вырастет до громадных размеров. Поэтому в конфигурации журнала ошибок показано значение 0, соответствующее неограниченному размеру журнала.

Вы можете задать размер в Кб для ограничения размера журнала ошибок в соответствии с вашими требованиями. Например, здесь мы ограничиваем размер файла журнала в 1Гб.

Эквивалентный скрипт T-SQL обновляет ErrorLogSizeInKb в регистре SQL Server.
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'ErrorLogSizeInKb', REG_DWORD, 1048576
GO
Перезагрузка журналов ошибок вручную
SQL Server позволяет вручную перегружать журналы ошибок для эффективного управления ими. Например, предположим, что вы увеличили число файлов журнала ошибок до 30. Тогда мы можем создать задание для агента SQL Server, который перегружает журналы ошибок в полночь. Тем самым мы имеем файл журнала ошибок на каждый день, если SQL Server не будет перезапущен в этом промежутке. Для перезагрузки вручную выполните системную хранимую процедуру sp_cycle_errorlog. Эту процедуру может выполнить пользователь с фиксированной серверной ролью sysadmin.
EXEC sp_cycle_errorlog
GO
Файл журнала SQL Server Agent
Агент SQL Server также имеет отдельный журнал ошибок, подобный журналам SQL Server. Вы можете обнаружить его в папке SQL Server Agent – > Error logs.

Щелкните правой кнопкой на папке Error log и выберите команду Configure. Это даст местоположение журнала ошибок агента и уровень журнала агента.
Файл журнала агента имеет расширение *.OUT и хранится в папке log при конфигурации по умолчанию. Например, в моей системе файл журнала находится здесь: C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLLogSQLAGENT.OUT.
По умолчанию в файл журнала записываются ошибки и предупреждения; однако мы можем включить информационные сообщения:
- Предупреждения: Эти сообщения предоставляют информацию о потенциальных проблемах. Например, “Job X was deleted while it was running” (задание Х было удалено во время выполнения).
- Сообщение об ошибках: оно дает информацию, которая требует немедленного вмешательства администратора баз данных, например, невозможность почтового сеанса.

Чтобы добавить информационное сообщение, поставьте галочку в поле Information.

SQL Server использует до 9 файлов журнала агента SQL Server. Имя текущего файла SQLAGENT.OUT. Файл с расширением .1 указывает на первый архивный журнал ошибок агента. Аналогично расширение .9 указывает на 9-й (самый старый) архив журнала ошибок.
Файлы журнала агента SQL Server перегружаются всякий раз, когда перезапускается SQL Server Agent. Для того, чтобы сделать это вручную, выполните щелчок правой кнопкой на папке Error Logs folder и выберите Recycle.

Или используйте хранимую процедуру sp_cycle_agent_errorlog для перезагрузки файлов журнала агента SQL Server вручную.
USE msdb ;
GO
EXEC dbo.sp_cycle_agent_errorlog ;
GO
Хранимая процедура архивирует текущий журнал ошибок агента, используя следующий процесс:
- Создается новый текущий журнал ошибок агента.
- Текущий журнал ошибок SQLAgent.out преобразуется в SQLAgent.1.
- SQLAgent.1 преобразуется в SQLAgent.2
Заключение
Файл журнала ошибок SQL Server содержит информацию, предупреждения и критические сообщения экземпляра. Это полезно для решения проблем, аудита входа (успешно, отказ). Администратор базы данных может сконфигурировать требуемое число архивных журналов ошибок и каталогов для хранения этих файлов.
Вы должны регулярно просматривать записи в журнале в качестве подготовки ежедневных или еженедельных отчетов о состоянии сервера.
Для отслеживания
событий, связанных с работой сервера
SQL Server 2008,
можно использовать журналы сервера:
журнал событий SQL
Server 2008, журнал событий
SQL Server Agent,
журнал событий ОС Windows и
журнал событий приложений Windows.
Просмотр журналов:
В SQL
Server Management
Studio из контейнера Management
SQL
Server Logs
выбрать нужный журнал в списке журналов
и из контекстного меню выбрать View
SQL Server
Log. Откроется окно
просмотрщика журналов (см. рис. 8.4).

Рис. 8.4.
Окно просмотрщика
журналов SQL Server Management
Studio
При помощи просмотрщика журналов
можно:
-
просматривать не только
журналы SQL Server,
но и журналы SQL Server
Agent, Windows и
Database Mail; -
экспортировать данные из
журналов при помощи кнопки Export
(Экспортировать), в том числе в очень
удобный для загрузки в базу данных
формат CSV; -
настраивать фильтрацию и
производить поиск нужной информации.
Для более детального
протоколирования событий, происходящих
на сервере, можно воспользоваться
параметром C2
Audit Tracing. Его можно установить
на вкладке Security свойств
сервера.
8.3. Мониторинг производительности sql Server 2008
8.3.1. Терминология мониторинга производительности
-
Эталонный график
производительности (Performance baseline)—
это набор самых важных показателей
производительности, который был собран
при приеме задачи в эксплуатацию, когда
нагрузка на сервер и размер базы данных
еще минимальны. -
Измерения
производительности при рабочей нагрузке
(workload performance measurements) — сбор показателей
счетчиков производительности на
регулярной основе. Главная задача —
определить тенденции в развитии
производительности и понять, когда у
нас могут возникнуть проблемы в работе
пользователей. -
Узкие места
(bottlenecks) — то есть те ресурсы,
недостаток которых тормозит работу
всей системы. Это может быть физический
компонент сервера, система индексов в
базе данных SQL Server
и т.п. После выявления узких мест
администратор должен принять меры к
их устранению. -
Время отклика
системы на запросы пользователей
(response time) — субъективный показатель
работы сервера, зависящий от специфики
работы пользователей. Главная задача
администратора при оптимизации
производительности — сделать
значение этого показателя приемлемым
для пользователей. -
Пропускная
способность (throughput) — объективный
показатель работы сервера, например,
сколько транзакций в секунду он может
обработать. -
Нагрузочное
тестирование (stress
testing) — искусственная
имитация нагрузки со стороны пользователей.
8.3.2. Средства для мониторинга и анализа производительности
-
Системный монитор
(System Monitor)
— это средство предназначено для работы
со счетчиками производительности —
как для операционной системы, так и для
SQL Server; -
Утилита командной строки
logman — позволяет выполнять протоколирование
показаний счетчиков в файлы на диске
или источники данных ODBC
точно так же, как и графическая версия
Системного монитора; -
Утилита командной строки
relog
— позволяет производить
конвертацию файлов с собранными
показаниями счетчиков из одного формата
Системного монитора в другой (например,
из двоичного формата *.blg
в текстовый *.csv); -
Утилита командной строки
typeperf
— предоставляет возможность
для просмотра показаний счетчиков
Системного монитора в командной строке; -
Профилировщик
(SQL Server Profiler) — позволяет найти и
запротоколировать команды, которые
передаются на сервер приложением, а
также найти запросы, на выполнение
которых требуется много времени; -
Network Monitor –
позволяет выявить проблемы с сетью; -
Database Tuning Advisor
– исползуется для анализа и оптимизации
системы индексов; -
SQL Server Management
Studio – используется для оптимизации
запросов к SQL Server.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Автор: Alexey Knyazev
Сегодня я расскажу про недокументированные расширенные хранимые процедуры (Extended Stored Procedures) для работы с журналом ошибок SQL Server и SQL Server Agent.
На самом деле при просмотре журнала SQL Server Logs через SSMS (SQL Server Management Studio) идёт обращение именно к этим двум основным процедурам (xp_readerrorlog и xp_enumerrorlogs), хоть и не на прямую, а через системные интерфейсные процедуры.
Особое внимание я уделю описанию входных параметрам этих недокументированных процедур.
И так, что же происходит, когда мы просматриваем журнал ошибок через SSMS?

Во первых мы определяем путь к нашей папке с журналами
|
select ServerProperty(‘ErrorLogFileName’) |

Затем выводим информацию о текущем журнале и о шести предыдущих
|
exec master.dbo.sp_enumerrorlogs |

в качестве входного параметра можно указать
- 1 — Список журналов SQL Server (значение по умолчанию)
- 2 — Список журналов SQL Server Agent
Если обратиться к тексту этой процедуры, то можно увидеть, что это не более, чем «обёртка» для вызова другой процедуры
|
create proc sys.sp_enumerrorlogs( @p1 int = 1) as begin IF (not is_srvrolemember(N‘securityadmin’) = 1) begin raiserror(15003,—1,—1, N‘securityadmin’) return (1) end exec sys.xp_enumerrorlogs @p1 end |
По коду процедуры видно, прежде чем обратиться к расширенной хранимой процедуре xp_enumerrorlogs, идёт проверка, что пользователь входит в серверную роль securityadmin.
Теперь если мы нажмём View SQL Server Log

то мы сможем просмотреть все события выбранного журнала:

В этот момент идёт обращение к ещё одной процедуре-обёртке master..sp_readerrorlog.
Ниже текст этой процедуры:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
create proc sys.sp_readerrorlog( @p1 int = 0, @p2 int = NULL, @p3 nvarchar(4000) = NULL, @p4 nvarchar(4000) = NULL) as begin if (not is_srvrolemember(N‘securityadmin’) = 1) begin raiserror(15003,—1,—1, N‘securityadmin’) return (1) end if (@p2 is NULL) exec sys.xp_readerrorlog @p1 else exec sys.xp_readerrorlog @p1,@p2,@p3,@p4 end |
Как вы видите у неё четыре входных параметра:
- @p1 — номер журнала (0-6); 0 — текущий
- @p2 — чей журнал; 1 — SQL Server, 2 — SQL Server Agent
- @p3 — фильтр для поиска
- @p4 — второе условие для поиска
Пример:
|
exec master.dbo.sp_readerrorlog 0, 1, N‘error’ |

|
exec master.dbo.sp_readerrorlog 0, 1, N‘error’, N‘34050’ |
Но это ещё не всё. Если обратиться к самой расширенной процедуре xp_readerrorlog, то у неё есть ещё несколько параметров:
- @p5 — условие с какой даты выводить результат
- @p6 — условие до какой даты выводить результат из журнала
- @p7 — тип сортировки (asc/desc)
- @p8 — экземпляр SQL Server (@InstanceName), параметр появился в SQL Server 2012
Пример:
|
exec master.dbo.xp_readerrorlog 0, 1, null, null, ‘20130418’, ‘20130419’ |

|
exec master.dbo.xp_readerrorlog 0, 1, null, null, ‘20130418’, ‘20130419’, N‘desc’ |

Если необходимо работать с журналом пользователю с минимальными привилегиями, то достаточно дать явные права на эти расширенные процедуры, но обращаться к ним придётся через запросы, т.к. SSMS использует интерфейсные процедуры, которые проверяют входимость пользователя в группу securityadmin.
|
use master go grant execute on xp_readerrorlog to [Ваш юзер] go |
Запись опубликована в рубрике В помощь администратору с метками error log. Добавьте в закладки постоянную ссылку.
Что такое ERRORLOG?! Некоторые специалисты, которые
сопровождают MS SQL Server первый раз слышат о нем или не подозревают, что он есть.
ERRORLOG – это
журнал MS SQL Server,
физически это текстовый файл. По умолчанию он находится в каталоге установке SQL Server в
папке Log, к примеру, в
«C:Program FilesMicrosoft SQL Server
MSSQL13.SQL2016 MSSQLLog». В нем регистрируются как информационные сообщения,
ошибки различной серьезности, пользовательские ошибки информация по dump-ам sql server и другая полезная
инфомарция, хотя бывает и не очень полезная.
Журнал создается каждый раз при
запуске службы SQL Server,
количество их регулируется настройками в SQL Server, желательно указывать 10 или более на важных системах, т.к при установке
обновлений, проблемах при нескольких попытках старта SQL Server, они перезаписываются
и в итоге вы можете потерять важную информацию при диагностике сервера.
Даже при установке обновлений SQL Server, происходит несколько рестартов
служб, что так же создает новый журнал.
В данный журнал записывается
информация как об ошибках работы сервера, информация о sql дампах,
безопасности, так и информация информационного характера.
Журналы можно просмотреть несколькими способами:
1.

Через SQL Server Management Studio, вкладка Management -> SQL Server Logs, дважды щелкнув на нужный файл.
2.
Открыть текстовым любым текстовым редактором из
каталог Log.

Текущий всегда будет без
расширения и с именем ERRORLOG,
далее по возрастанию от 1 и выше, 1 это предпоследний.
3.
Использовать хранимую процедуру.
exec master..xp_ReadErrorLog

Когда журнал большой, лучше его отфильтровать, к примеру
таким способом, меню Filter в Log File Viewer:

Или через T-SQL:
create table #t
( logdate datetime,
processinfo char(15),
text nvarchar(max)
)
insert into #t
exec xp_ReadErrorLog
select * from #t where text like‘%Error%’
drop table #t
Если сервер давно не
перезагружали или сервер имел много событий, файл журнала событий может вырасти
в размере и открытие его будет проблематичным. В данном случае, активный журнал
можно пересоздать командой:
EXEC sp_cycle_errorlog
После этого создастся новый
текущий журнал, а в файле отразится информация вида:
Attempting to cycle error log. This
is an informational message only; no user action is required.
The error log has been
reinitialized. See the previous log for older entries.
Чтобы держать файлы в порядке и
читабельными, желательно указанную команду прописать в sql задание на
раз в месяц.
Итак, что говорит нам SQL Server Log?
Возьмем, для примера, файл с
одного с рабочих серверов:
2017-06-18
12:26:50.31 Server Microsoft SQL
Server 2016 (SP1-CU3) (KB4019916) — 13.0.4435.0 (X64)
Apr 27 2017 17:36:12
Copyright
(c) Microsoft Corporation
Enterprise Edition: Core-based
Licensing (64-bit) on Windows Server 2016 Datacenter 6.3 <X64> (Build
14393: )
Сразу можно определить версию SQL Server, установленные
обновления и ОС, время старта SQL Server.
Довольно часто, обновления не ставят на сервер, но имеют проблемы. Как-то обратился клиент,
у него имелось куча проблем, попросил данный журнал SQL server, а у них версия SQL server 2008R2 RTM, при том что за окном уже SQL версии 2017 на подходе. Первое
рекомендация и необходимость дальнейшей работы – установить обновления
последния.
2017-06-18
12:26:50.32 Server UTC adjustment:
3:00
Локальное время на сервере.
2017-06-18
12:26:50.32 Server (c) Microsoft
Corporation.
2017-06-18
12:26:50.32 Server All rights
reserved.
2017-06-18
12:26:50.32 Server Server process ID
is 8112.
2017-06-18
12:26:50.32 Server System
Manufacturer: ‘FUJITSU’, System Model: ‘PRIMERGY RX4770 M3’.
Вендор и модель сервера, тоже
важно. При виртуализации это здесь так же видно.
2017-06-18
12:26:50.32 Server Authentication
mode is MIXED.
Вид аутефикации на сервере — здесь
смешанная.
2017-06-18
12:26:50.32 Server Logging SQL
Server messages in file ‘C:SQLMSSQL13.MSSQLSERVERMSSQLLogERRORLOG’.
Каталог расположения этого самого журнала.
2017-06-18
12:26:50.32 Server The service
account is ‘ADSQL_USER’. This is an informational message; no user action is
required.
Учетная запись, под которой
работает служба SQL Server. Сразу и легко определяес под кем работает служба,
далее можно у админов ОС запросить проверку прав в ОС или что-то подобное.
2017-06-18
12:26:50.32 Server Registry startup
parameters:
-d
C:SQLMSSQL13.MSSQLSERVERMSSQLDATAmaster.mdf
-e
C:SQLMSSQL13.MSSQLSERVERMSSQLLogERRORLOG
-l
C:SQLMSSQL13.MSSQLSERVERMSSQLDATAmastlog.ldf
-T 2371
-T 4135
-T 2546
Параметры старта SQL server,
здесь видим флаги запуска службы SQL server, располжения системных баз данных.
2017-06-18
12:26:50.32 Server Command Line
Startup Parameters:
-s «MSSQLSERVER»
2017-06-18
12:26:52.86 Server SQL Server
detected 4 sockets with 24 cores per socket and 48 logical processors per
socket, 192 total logical processors; using 192 logical processors based on SQL
Server licensing. This is an informational message; no user action is required.
2017-06-18
12:26:52.86 Server SQL Server is
starting at normal priority base (=7). This is an informational message only.
No user action is required.
Видим, сколько процессоров на
сервере и включен ли HT.
2017-06-18
12:26:52.86 Server Detected 3193980
MB of RAM. This is an informational message; no user action is required.
Память на сервере, здесь 3 Тб.
2017-06-18
12:26:52.86 Server Using locked
pages in the memory manager.
2017-06-18
12:26:52.86 Server Large Page
Allocated: 32MB
2017-06-18
12:26:52.87 Server Large Page
Allocated: 32MB
2017-06-18
12:26:52.87 Server Large Page
Allocated: 32MB
2017-06-18
12:26:52.87 Server Large Page
Allocated: 32MB
Видим, что учетной записи SQL
server предоставлены права блокировать память на сервере, а также выделение
больших страниц в памяти.
2017-06-18
12:26:57.71 Server Machine supports
memory error recovery. SQL memory protection is enabled to recover from memory
corruption.
2017-06-18
12:27:00.82 Server Default
collation: Cyrillic_General_CI_AS (us_english 1033)
2017-06-18
12:27:00.82 Server Automatic
soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with
greater than 8 physical cores.
Включается soft-Numa в SQL 2016.
2017-06-18
12:27:00.90 Server Buffer pool
extension is already disabled. No action is necessary.
Buffer pool extension- выключен. Далее идет определения DAC, soft-numa, параметры блокировок:
2017-06-18
12:27:01.04 Server
InitializeExternalUserGroupSid failed. Implied authentication will be
disabled.
2017-06-18
12:27:01.04 Server Implied
authentication manager initialization failed. Implied authentication will be
disabled.
2017-06-18
12:27:01.13 Server The maximum
number of dedicated administrator connections for this instance is ‘1’
2017-06-18
12:27:01.13 Server This instance of
SQL Server last reported using a process ID of 8116 at 6/18/2017 1:06:37 PM
(local) 6/18/2017 10:06:37 AM (UTC). This is an informational message only; no
user action is required.
2017-06-18
12:27:01.13 Server Node
configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask:
0x0000000000555555:0. This message provides a description of the NUMA
configuration for this computer. This is an informational message only. No user
action is required.
…..
2017-06-18 12:27:01.14 Server Node configuration: node 15: CPU mask:
0x0000aaaaaa000000:3 Active CPU mask: 0x0000aaaaaa000000:3. This message
provides a description of the NUMA configuration for this computer. This is an
informational message only. No user action is required.
2017-06-18
12:27:01.31 Server Using dynamic
lock allocation. Initial allocation of
2500 Lock blocks and 5000 Lock Owner blocks per node. This is an informational message only. No user action is required.
2017-06-18
12:27:01.31 Server Lock partitioning
is enabled. This is an informational
message only. No user action is required.
2017-06-18
12:27:01.34 Server Database Instant
File Initialization: enabled. For security and performance considerations see
the topic ‘Database Instant File Initialization’ in SQL Server Books Online.
This is an informational message only. No user action is required.
2017-06-18
12:27:01.41 Server CLR version
v4.0.30319 loaded.
2017-06-18
12:27:01.51 Server Query Store
settings initialized with enabled = 1,
Включается компонент Query Store
Начинается старт системных бд:
2017-06-18
12:27:01.53 spid10s Starting up
database ‘master’.
2017-06-18
12:27:01.53 Server In-Memory OLTP
initialized on highend machine.
2017-06-18
12:27:01.59 Server Common language
runtime (CLR) functionality initialized using CLR version v4.0.30319 from
C:WindowsMicrosoft.NETFramework64v4.0.30319.
2017-06-18
12:27:01.72 spid10s CHECKDB for
database ‘master’ finished without errors on 2017-06-21 03:35:10.293 (local
time). This is an informational message only; no user action is required.
2017-06-18
12:27:01.72 spid10s Resource governor
reconfiguration succeeded.
2017-06-18
12:27:01.72 spid10s SQL Server Audit
is starting the audits. This is an informational message. No user action is
required.
2017-06-18
12:27:01.73 spid10s Audit: Server
Audit: 65537, Initialized and Assigned State: START_FAILED
2017-06-18
12:27:01.73 spid10s Audit: Server
Audit: 65537, Initialized and Assigned State: STARTED
2017-06-18
12:27:01.74 spid10s SQL Server Audit
has started the audits. This is an informational message. No user action is
required.
2017-06-18
12:27:01.78 spid10s Server name is
‘server1’. This is an informational message only. No user action is required.
Имя сервера, как не странно)
2017-06-18
12:27:01.80 spid10s Database
mirroring has been enabled on this instance of SQL Server.
2017-06-18
12:27:01.80 spid20s Always On: The
availability replica manager is starting. This is an informational message
only. No user action is required.
2017-06-18
12:27:01.81 spid20s Always On
Availability Groups: Waiting for local Windows Server Failover Clustering
service to start. This is an informational message only. No user action is
required.
2017-06-18
12:27:01.81 spid20s Always On
Availability Groups: Local Windows Server Failover Clustering service started.
This is an informational message only. No user action is required.
Сервер является частью кластера,
включен компонент AlwaysOn.
2017-06-18
12:27:01.81 spid12s Starting up
database ‘mssqlsystemresource’.
2017-06-18
12:27:01.81 spid20s Always On
Availability Groups: Waiting for local Windows Server Failover Clustering node
to start. This is an informational message only. No user action is required.
2017-06-18
12:27:01.81 spid20s Always On
Availability Groups: Local Windows Server Failover Clustering node started.
This is an informational message only. No user action is required.
2017-06-18
12:27:01.81 spid20s Always On
Availability Groups: Waiting for local Windows Server Failover Clustering node
to come online. This is an informational message only. No user action is
required.
2017-06-18
12:27:01.81 spid31s Starting up
database ‘DB’.
2017-06-18
12:27:01.81 spid22s Starting up
database ‘DB2’.
2017-06-18
12:27:01.81 spid25s Starting up
database ‘DB3’.
2017-06-18
12:27:01.81 spid26s Starting up
database ‘DB4’.
2017-06-18
12:27:01.82 spid24s Starting up
database ‘msdb’.
Получаем список баз данных на
сервере и далее можно отследить как они инициализируются, без проблем или нет.
2017-06-18
12:27:01.82 spid16s Server is
listening on [ ‘any’ <ipv6> 1433].
2017-06-18
12:27:01.82 spid16s Server is
listening on [ ‘any’ <ipv4> 1433].
Получили TCP порты на которые
настроен SQL Server
2017-06-18
12:27:01.82 spid16s Server local
connection provider is ready to accept connection on [
\.pipeSQLLocalMSSQLSERVER ].
2017-06-18
12:27:01.82 spid16s Server local
connection provider is ready to accept connection on [ \.pipesqlquery ].
2017-06-18
12:27:01.82 Server Server is
listening on [ ‘any’ <ipv6> 1434].
2017-06-18
12:27:01.82 Server Server is
listening on [ ‘any’ <ipv4> 1434].
2017-06-18
12:27:01.82 Server Dedicated admin connection support was
established for listening remotely on port 1434.
2017-06-18
12:27:01.83 spid31s [INFO]
HkHostDbCtxt::Initialize(): Database ID: [13] ‘DB’. XTP Engine version is 2.9
В базе данных используются
компоненты InMemory
2017-06-18
12:27:01.83 spid12s The resource
database build version is 13.00.4435. This is an informational message only. No
user action is required.
2017-06-18
12:27:01.83 spid16s SQL Server is now
ready for client connections. This is an informational message; no user action
is required.
2017-06-18
12:27:01.83 Server SQL Server is
attempting to register a Service Principal Name (SPN) for the SQL Server
service. Kerberos authentication will not be possible until a SPN is registered
for the SQL Server service. This is an informational message. No user action is
required.
Проблемы с SPN, возможные,
возможно SPN уже есть, просто нет прав на просмотр SPN.
2017-06-18
12:27:01.84 spid26s [INFO]
HkHostDbCtxt::Initialize(): Database ID: [8] ‘DB3’. XTP Engine version is 2.9.
2017-06-18
12:27:01.87 spid12s Starting up
database ‘model’.
2017-06-18
12:27:01.89 Server The SQL Server
Network Interface library could not register the Service Principal Name (SPN) [
MSSQLSvc/server1.ad.ru ] for the SQL Server service. Windows return code:
0x2098, state: 15. Failure to register a SPN might cause integrated
authentication to use NTLM instead of Kerberos. This is an informational
message. Further action is only required if Kerberos authentication is required
by authentication policies and if the SPN has not been manually registered.
2017-06-18
12:27:01.89 Server The SQL Server
Network Interface library could not register the Service Principal Name (SPN) [
MSSQLSvc/server1.ad.ru:1433 ] for the SQL Server service. Windows return code:
0x2098, state: 15. Failure to register a SPN might cause integrated
authentication to use NTLM instead of Kerberos. This is an informational
message. Further action is only required if Kerberos authentication is required
by authentication policies and if the SPN has not been manually registered.
2017-06-18
12:27:01.94 spid12s CHECKDB for
database ‘model’ finished without errors on 2017-06-21 03:38:53.560 (local
time). This is an informational message only; no user action is required.
2017-06-18
12:27:01.94 spid12s Polybase feature
disabled.
2017-06-18
12:27:01.94 spid12s Clearing tempdb
database.
2017-06-18
12:27:02.06 spid12s Starting up
database ‘tempdb’.
— стартовали системные бд, дальше
идут уже сообщения относящиеся к базам данных, работе сервера или ошибки.
Итак, мы прошлись по журналу ERRORLOG SQL Server, как видим, он
содержит много полезной информации и может служит начальной точкой при начале
диагностике проблем в MS SQL Server.
Если вас просят провести
диагностику сервера или решить проблемы, а с другой стороны специалист мало знаком
с SQL Server, просто попросите его
найти на сервере файл ERRORLOG,
заархивировать его и прислать вам, в итоге вы без лишних разговоров получите
много информации об сервере.

- Remove From My Forums
-
Вопрос
-
Добрый день!
Использую SQL Server 2008 x64 для базы данных области. При запуске процедуры из окна запроса, вижу весь вывод, всю историю ее работы в результах и сообщениях. Но при запуске этой же процедуры из под агента заданий по расписанию, вижу только часть вывода
работы процедуры и затем: … Шаг завершился с ошибкой. И какая ошибка, где ее теперь искать…Подскажите, пожалуйста, как включить весь вывод в журнал агента или может, где-то есть полный журнал событий агента?
Заранее благодарен!
-
Изменено
httpal
24 августа 2016 г. 2:21
-
Изменено
Ответы
-
-
Помечено в качестве ответа
httpal
30 сентября 2016 г. 1:52
-
Помечено в качестве ответа
Все ответы
-
Здравствуйте,
Уточните пожалуйста, если зайти используя MS SQL Server Management Studio:
SSMS -> SQL Server Agent -> Error Log
присутствуют какие-то ошибки?
Best Regards, Andrei …
MCP -
Залогиньтесь на сервер под учёткой агента и запустите процедуру
-
SSMS -> Агент SQL Server -> Журналы ошибок
Дата,Источник,Серьезность,Сообщение
08/24/2016 14:47:03,,Предупреждение,[162] Внутренний запрос (от SetJobNextRunDate [причина: расписание не будет выполняться повторно]) на деактивацию расписания 45
08/16/2016 10:00:23,,Предупреждение,[162] Внутренний запрос (от SetJobNextRunDate [причина: расписание не будет выполняться повторно]) на деактивацию расписания 45
08/12/2016 15:20:59,,Предупреждение,[162] Внутренний запрос (от SetJobNextRunDate [причина: расписание не будет выполняться повторно]) на деактивацию расписания 45
08/11/2016 12:20:26,,Предупреждение,[162] Внутренний запрос (от SetJobNextRunDate [причина: расписание не будет выполняться повторно]) на деактивацию расписания 45
08/04/2016 15:04:33,,Предупреждение,[162] Внутренний запрос (от SetJobNextRunDate [причина: расписание не будет выполняться повторно]) на деактивацию расписания 45
08/02/2016 11:14:53,,Предупреждение,[396] Не определено условие простоя процессора — расписания заданий типа OnIdle использоваться не будут
08/02/2016 11:14:53,,Сведения,[129] SQLAgent$мойсервер запущена с помощью средства управления службами NT Windows
08/02/2016 11:14:53,,Ошибка,[364] Служба Messenger не была запущена — уведомления NetSend отправлены не будут
08/02/2016 11:14:52,,Сведения,[432] В кэше подсистем находится 12 подсистем
08/02/2016 11:14:52,,Сведения,[339] Локальный компьютер мойсервер работает с Windows NT 6.1 (7601) Service Pack 1
08/02/2016 11:14:52,,Сведения,[310] Обнаружено 24 процессоров и 12278 МБ ОЗУ
08/02/2016 11:14:52,,Сведения,[103] В качестве библиотеки NetLib драйвером используется DBNETLIB.DLL; локальный сервер узла -HP2X64-20HP2X64_20
08/02/2016 11:14:52,,Сведения,[102] ODBC-драйвер для SQL Server версии 10.00.5500
08/02/2016 11:14:52,,Сведения,[101] SQL Server мойсервер версии 10.00.5500 (с ограничением на 0 соединений)
08/02/2016 11:14:52,,Сведения,[100] Microsoft SQLServerAgent версии 10.0.5500.0 (сборка (неизвестно) unicode коммерческая): идентификатор процесса 9368 -
Уточните пожалуйста, если в
журнале ошибок, присутствую ошибки по конкретному заданию, а не все подряд?
Best Regards, Andrei …
MCP -
В данном случае нет.
Вот журнал (правой кнопкой по джобу -> просмотр журнала) конкретного джоба, который меня интересует:
Сообщение
Выполняется от имени пользователя: NT AUTHORITYсистема….Обработался p01016081612o8.rar [SQLSTATE 01000] (Сообщение 0) Обработался p01116080112o8.rar [SQLSTATE 01000]…….
Обработался p22616081613o8.rar [SQLSTATE 01000] (Сообщение 0) пустой файл:P2261608171.TXT [SQLSTATE 01000] (Сообщение 0) пустой файл:P2261608271.TXT [SQLSTATE 01000] (Сообщение 0) пустой файл:P2261608311.TXT [SQLSTATE 01000] (Сообщение
0) пустой файл:P2261608331.TXT [SQLSTATE 01000] (С… Шаг завершился с ошибкой. -
Уточните пожалуйста у Вас на сервере задание обслуживание (maintenance plan) выполняется или задание агента (job)?
Best Regards, Andrei …
MCP -
Пробуйте просмотреть историю (View History) заданий (Job History) выполнения задания, посмотрите если присутствуют более детальные ошибки выполнения.
Best Regards, Andrei …
MCP -
Спасибо за помощь.
Вообще-то я туда и смотрю! И вопрос этой ветки и есть о View History!
Правой кнопкой по выбранному job’у -> View History -> нажимаю на «+» чтоб развернуть описание -> выделяю его и смотрю подробное описание ниже.
И это подробное описание всегда обрывается: «… Шаг завершился с ошибкой.», выводя не полный список.
-
Под рукой нет SQL Server 2008, уточните пожалуйста если вывод T-SQL также выводить весь результат?
Пример:
-- lists all job information for the NightlyBackups job. USE msdb ; GO EXEC dbo.sp_help_jobhistory @job_name = N'NightlyBackups' ; GO
Best Regards, Andrei …
MCP -
Вот таких несколько строк:
A65B9085-3F47-4376-B8FC-C010F099D028 CLINIC_NEW 0 20160829 23000 930 NULL NULL NULL 0
*******************Т.е. нужной для меня здесь информации я не вижу…
-
Изменено
httpal
29 августа 2016 г. 9:20
-
Изменено
-
На сколько я понял, решения нет ???
-
На сколько я понял, решения нет ???
— Решение должно быть, иногда тяжело понять проблемы не видя ее визуально.
— Уточните пожалуйста в логах, логируются какие-то ошибки?
C:Program FilesMicrosoft SQL ServerMSSQL10.<--Instance-->MSSQLLog
например:
C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLLog
Best Regards, Andrei …
MCP -
Да, есть там что-то… Какие именно ошибки нужно посмотреть?
-
Я думаю, что вы не туда копаете…
Все работает в штатном режиме как надо!!! Ошибок нет!!!
Прошу вас внимательно прочитайте сл. текст!
Есть процедура MY_PROC, в ней после определенных команд я делаю: print ‘обработался файл №…’ и таких сообщений за все время работы процедуры может быть 400 — 500. Если нажать в студии «создать запрос» и запустить
эту процедуру руками: exec MY_PROC, то я увижу все 400 или 500 сообщений (в виде столбца) и, если была какая-то ошибка в процессе работы процедуры, например, после 447 сообщения, то я увижу в «окне сообщений» все генерируемые процедурой
сообщения и в том числе ошибку после 447 сообщения.Если запустить эту же процедуру через job («запустить задание на шаге» или по расписанию), то, зайдя в «просмотр журнала» этого job’а, я увижу только где-то 80-120 сгенерированных процедурой сообщений: ‘обработался
файл №…’, а остальные отсекаются. И ошибку на 447 я уже не увижу…Дык вот, есть ли возможность журналировать ВСЕ СООБЩЕНИЯ ПРОЦЕДУРЫ, запуская ее через job?
-
Изменено
httpal
7 сентября 2016 г. 6:52
-
Изменено
-
-
Изменено
SQxModerator
7 сентября 2016 г. 10:30
добавлено
-
Изменено
-
Возможно отключено, я не нашел данных в этой таблице для конкретного job’а …
Вообще два файла базы: .MDF и .LDF.
Каждую ночь выполняется DBCC SHRINKFILE (db_log, TRUNCATEONLY);
-
Изменено
httpal
8 сентября 2016 г. 2:19
-
Изменено
-
-
Помечено в качестве ответа
httpal
30 сентября 2016 г. 1:52
-
Помечено в качестве ответа
-
Спасибо, поймал ошибку!!!
Содержание
- Manage the SQL Server error log
- Summary
- Reinitializing SQL Server error logs
- Configuring the number and size of SQL Server Error Logs
- Reading the error logs
- More information
- Third-party information disclaimer
- Просмотр журнала ошибок SQL Server
- SCM Services — Configure SQL Server Error Logs
- To open the Configure SQL Server Error Logs dialog box
- SQL-Ex blog
- Как эффективно управлять журналами SQL Server
- Введение
- Журналы SQL Server и их местонахождение
- Метод 1: Использование расширенной процедуры xp_readerrorlog
- Метод 2: Использование функции SERVERPROPERTY()
- Метод 3: использование менеджера конфигурации SQL Server
- Конфигурирование числа файлов журнала SQL Server и их размеров
- Перезагрузка журналов ошибок вручную
- Файл журнала SQL Server Agent
- Заключение
- Обратные ссылки
- Комментарии
Manage the SQL Server error log
This article describes how to manage the SQL Server error log.
Original product version: В SQL Server
Original KB number: В 2199578
Summary
The Microsoft SQL Server error log contains much valuable information that is generated by the SQL Server. The error log contains informational messages, warnings, and information about critical events. The error log also contains information about user-generated messages and auditing information such as logon events (success and failure).
The error log is a valuable data point for SQL Server administrators. As an administrator, you must manage the size of the error logs so that you can use them when they’re needed.
The error log file is initialized every time that the instance of SQL Server is started. If the instance of SQL Server hasn’t been restarted for a long time, the error log file can grow large. If many exceptions (for example, access violations) or critical events (for example, SQL Server assertions) occur, these events can generate lots of information that is written to the SQL Server error log.
Reinitializing SQL Server error logs
You can use the sp_cycle_errorlog stored procedure to reinitialize the error logs periodically. For more information, see sp_cycle_errorlog (Transact-SQL).
Configuring the number and size of SQL Server Error Logs
For more information on how you can configure the size and number of SQL Server Error logs for an instance review Configure SQL Server Error Logs.
Reading the error logs
You can read the contents of the SQL Server or SQL Server Agent error log file and filter on keywords by using sp_read_errorlog. For example, you can find log messages in the current SQL Server error log that indicate a database is starting up by running the following command:
More information
For more information on configuring these values using T-SQL, see the following blog posts by Paul Randal and Jan Kare Lokna:
Third-party information disclaimer
Third-party information disclaimer
The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.
Источник
Просмотр журнала ошибок SQL Server
Область применения: SQL Server (все поддерживаемые версии) — только для Windows
Журнал ошибок сервера SQL Server позволяет убедиться, что процессы были завершены успешно (например, операции резервного копирования и восстановления, пакеты команд или другие скрипты и процессы). Это полезно при определении любых текущих или потенциальных проблем, включая сообщения автоматического восстановления (особенно если экземпляр SQL Server был остановлен и перезапущен), сообщения ядра и другие сообщения об ошибках на уровне сервера.
Журнал ошибок сервера SQL Server можно просмотреть, используя среду SQL Server Management Studio или любой текстовый редактор. Дополнительные сведения о просмотре журнала ошибок см. в разделе Open Log File Viewer. По умолчанию журнал ошибок содержится в файлах Program FilesMicrosoft SQL ServerMSSQL. n MSSQLLOGERRORLOG и ERRORLOG. n .
Новый журнал ошибок создается при каждом запуске экземпляра сервера SQL Server , хотя циклическую смену журнала ошибок можно организовать при помощи системной хранимой процедуры sp_cycle_errorlog без перезапуска экземпляра сервера SQL Server. Обычно сервер SQL Server хранит резервные копии шести предыдущих журналов и присваивает наиболее свежей копии расширение «.1», следующей расширение «.2» и т. д. Файл текущего журнала ошибок расширения не имеет.
Помните, что журнал ошибок SQL Server можно также просматривать на экземплярах SQL Server , которые находятся вне сети или не запускаются. Дополнительные сведения см. в разделе Просмотр автономных файлов журнала.
Источник
SCM Services — Configure SQL Server Error Logs
Applies to: SQL Server (all supported versions)
This topic describes how to view or modify the way SQL Server error logs are recycled.
To open the Configure SQL Server Error Logs dialog box
In Object Explorer, expand the instance of SQL Server, expand Management, right-click SQL Server Logs, and then click Configure.
In the Configure SQL Server Error Logs dialog box, choose from the following options.
a. Log files count
Limit the number of the error log files before they are recycled
Check to limit the number of error logs created before they are recycled. A new error log is created each time an instance of SQL Server is started. SQL Server retains backups of the previous six logs, unless you check this option, and specify a different maximum number of error log files below.
Maximum number of error log files
Specify the maximum number of archived error log files created before they are recycled. The default is 6, not including the current one. This value determines the number of previous backup logs that SQL Server retains before recycling them.
b. Log file size
Maximum size for error log file in KB
You can set the size amount of each file in KB. If you leave it at 0 the log size is unlimited.
Источник
SQL-Ex blog
Новости сайта «Упражнения SQL», статьи и переводы

Как эффективно управлять журналами SQL Server
В статье дается обзор журналов SQL Server для управления и устранения неполадок на сервере.
Введение
Администратор базы данных может также сконфигурировать SQL Server для выполнения дополнительных записей в журналы ошибок. Например, мы можем включить флаг трассировки для захвата информации о тупиковых ситуациях. DBA должен регулярно просматривать эти журналы в поисках потенциальных проблем. Вы можете обнаружить в журналах такую информацию, как сбой резервного копирования, ошибки входа, ошибки ввода-вывода. Эти журналы ошибок являются отличным средством для обнаружения существующих и потенциальных проблем в экземплярах SQL Server.
Журналы SQL Server известны как SQL Server Error logs. Журналы ошибок содержат информационные сообщения, предупреждения и сообщения о критичных ошибках. Вы можете просматривать некоторые из этих журналов также в просмотрщике событий Windows. Однако рекомендуется использовать журналы SQL Server для получения подробной информации.
Журналы SQL Server и их местонахождение
Если вы подключены к экземпляру SQL Server в SSMS, перейдите к Management -> SQL Server Logs. Как показано ниже, имеется текущий журнал и шесть архивных журналов (Archive#1 — Archive #6).

Метод 1: Использование расширенной процедуры xp_readerrorlog
Текущие журналы являются самыми последними файлами журнала ошибок, и вы можете использовать их для просмотра недавней деятельности с момента запуска SQL Server или ручного перезапуска файла журнала. Журнал ошибок SQL Server является текстовым файлом, хранящимся в каталоге журналов экземпляра SQL Server. Вы можете использовать расширенную процедуру xp_readerrorlog для нахождения текущего местоположения журнала ошибок.
Этот запрос имеет следующие параметры:
- Файл журнала ошибок: значение 0 для текущего, 1 для Archive#1, 2 для Archive #2.
- Тип файла журнала: значение 0 для журнала ошибок SQL Server, 1 для агента SQL Server.
- Строка поиска 1
- Строка поиска 2
- Время от
- Время до
- Сортировка результатов — по возрастанию (N’ASC) или по убыванию (N’Desc)
Для моего демонстрационного экземпляра файл журнала ошибок находится в папке C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLLogERRORLOG.

Метод 2: Использование функции SERVERPROPERTY()
Мы можем использовать в запросе функцию SERVERPROPERTY, и также определить местонахождение SQL Server ERRORLOG.

Метод 3: использование менеджера конфигурации SQL Server
Откройте SQL Server Configuration Manager и посмотрите параметры запуска. Местоположение файлов журнала указывается с помощью переключателя -e.

Вы можете развернуть каталог журналов и просмотреть текущий или архивные файлы журнала. Эти журналы ошибок можно открыть в текстовом редакторе, таком как Notepad или Visual Studio Code.

Конфигурирование числа файлов журнала SQL Server и их размеров
По умолчанию SQL Server поддерживает текущий и 6 архивных файлов журнала. Чтобы уточнить значение, выполните щелчок правой кнопкой на папке SQL Server Logs в SSMS и выберите Configure.

SQL Server записывает всю информацию в текущий файл журнала, независимо от размера файла журнала. В загруженной системе или в экземпляре с большим количеством ошибок вам может быть сложно просмотреть файл журнала в SSMS. SQL Server создает новый файл журнала и архивирует текущий файл в следующих случях.
- При перезапуске службы SQL.
- При перезагрузке журнала ошибок вручную.
Однако если вы часто перезапускаете серверы по неизвестным причинам, то можете потерять все исторические данные в архивных журналах, поскольку их поддерживается только шесть. Поскольку ошибки содержат ценную информацию, которая может помочь в решении проблем, вы можете не захотеть потерять эти важные данные. Тогда, возможно, вы захотите сохранять файлы журнала производственной системы в течение недели или даже месяца.
SQL Server позволяет сконфигурировать от 6 до 99 файлов журнала ошибок. Вы не можете указать значение меньше шести, поскольку в любом случае будет поддерживаться шесть архивных журналов ошибок.
Для изменения значения по умолчанию числа файлов журнала ошибок поставьте галочку в поле с названием “Limit the number of error log files before they are recycled”. Например, следующий скриншот показывает максимальное число файлов журнала ошибок, равное 30.

Это эквивалентно выполнению скрипта T-SQL, который использует расширенную хранимую процедуру и обновляет значение регистра.
Замечание. Следует перезапустить службу SQL, чтобы изменения вступили в силу.
Как утверждалось ранее, по умолчанию размер журнала ошибок не ограничен. Например, если вы не запускаете SQL Server в течение длительного периода и вручную не перегружаете файлы журнала, этот файл вырастет до громадных размеров. Поэтому в конфигурации журнала ошибок показано значение 0, соответствующее неограниченному размеру журнала.

Вы можете задать размер в Кб для ограничения размера журнала ошибок в соответствии с вашими требованиями. Например, здесь мы ограничиваем размер файла журнала в 1Гб.

Эквивалентный скрипт T-SQL обновляет ErrorLogSizeInKb в регистре SQL Server.
Перезагрузка журналов ошибок вручную
SQL Server позволяет вручную перегружать журналы ошибок для эффективного управления ими. Например, предположим, что вы увеличили число файлов журнала ошибок до 30. Тогда мы можем создать задание для агента SQL Server, который перегружает журналы ошибок в полночь. Тем самым мы имеем файл журнала ошибок на каждый день, если SQL Server не будет перезапущен в этом промежутке. Для перезагрузки вручную выполните системную хранимую процедуру sp_cycle_errorlog. Эту процедуру может выполнить пользователь с фиксированной серверной ролью sysadmin.
Файл журнала SQL Server Agent
Агент SQL Server также имеет отдельный журнал ошибок, подобный журналам SQL Server. Вы можете обнаружить его в папке SQL Server Agent – > Error logs.

Щелкните правой кнопкой на папке Error log и выберите команду Configure. Это даст местоположение журнала ошибок агента и уровень журнала агента.
Файл журнала агента имеет расширение *.OUT и хранится в папке log при конфигурации по умолчанию. Например, в моей системе файл журнала находится здесь: C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLLogSQLAGENT.OUT.
По умолчанию в файл журнала записываются ошибки и предупреждения; однако мы можем включить информационные сообщения:
- Предупреждения: Эти сообщения предоставляют информацию о потенциальных проблемах. Например, “Job X was deleted while it was running” (задание Х было удалено во время выполнения).
- Сообщение об ошибках: оно дает информацию, которая требует немедленного вмешательства администратора баз данных, например, невозможность почтового сеанса.

Чтобы добавить информационное сообщение, поставьте галочку в поле Information.

SQL Server использует до 9 файлов журнала агента SQL Server. Имя текущего файла SQLAGENT.OUT. Файл с расширением .1 указывает на первый архивный журнал ошибок агента. Аналогично расширение .9 указывает на 9-й (самый старый) архив журнала ошибок.
Файлы журнала агента SQL Server перегружаются всякий раз, когда перезапускается SQL Server Agent. Для того, чтобы сделать это вручную, выполните щелчок правой кнопкой на папке Error Logs folder и выберите Recycle.

Или используйте хранимую процедуру sp_cycle_agent_errorlog для перезагрузки файлов журнала агента SQL Server вручную.
Хранимая процедура архивирует текущий журнал ошибок агента, используя следующий процесс:
- Создается новый текущий журнал ошибок агента.
- Текущий журнал ошибок SQLAgent.out преобразуется в SQLAgent.1.
- SQLAgent.1 преобразуется в SQLAgent.2
Заключение
Обратные ссылки
Нет обратных ссылок
Комментарии
Показывать комментарии Как список | Древовидной структурой
Автор не разрешил комментировать эту запись
Источник
MS Информация журнала / записи журнала SQL могут быть вам знакомы и незнакомы. Знакомо, потому что вы, возможно, использовали его. Проверьте и обратите внимание на некоторую информацию / записи журнала, например , История заданий; это незнакомо, потому что означает, что вы никогда не сможете обращать внимание на управление информацией / записями журнала. Здесь я всегда использую термин информация / запись журнала вместо термина файл журнала. Вкратце, я хочу, чтобы все отличили его от файла журнала транзакций (ldf) . В Интернете, если вы используете файл журнала в качестве ключевого слова для поиска, вы можете найти информацию, относящуюся к журналу транзакций. . Фактически, это действительно называется файлом журнала. В этой статье я, вероятно, начну с классификации записей журнала, того, как просматривать записи журнала, местоположения записей журнала, настроек записей журнала и почему журнал ошибок будет увеличиваться , Как очистить записи журнала и так далее.
Классификация записей журнала
Согласно программе просмотра файлов журнала, журнал ошибок обычно классифицируется как SQL SERVER, агент SQL SERVER, журнал приложений Windows, почта базы данных и другие четыре типа записей журнала ошибок. Если вы также учитываете план обслуживания, план удаленного обслуживания и информацию журнала истории заданий, то всего существует 7 типов файлов информации журнала.

Среди них типы журналов приложений Windows делятся на системный журнал (System), журнал безопасности (Security), журнал приложений (Application), журнал PatchLink. Дождавшись нескольких, я открыл SSMS на сервере (Windows Server 2008 R2 Standard) и обнаружил, что есть еще HardwareEvents, Internet Explorer, Windows PowerShell. Дождитесь файлов журнала. Это файлы журнала системы. Вам не нужно слишком беспокоиться о том, сколько их видов.

Место регистрации
Расположение записей журнала SQL SERVER и записей прокси SQL SERVER следующее. Записи журнала SQL SERVER обычно хранятся в файле ERRORLOG.n (n — число), SQL Записи журнала агента SERVER находятся в таких файлах, как SQLAGENT.n. Конечно, это также связано с версией базы данных:
|
версия |
путь |
|
SQL SERVER 2005 |
Program FilesMicrosoft SQL ServerMSSQL.nMSSQLLOG |
|
SQL SERVER 2008 |
C: Program Files Microsoft SQL Server MSSQL10.Имя экземпляра MSSQL LOG |
|
SQL SERVER 2008 R2 |
C: Program Files Microsoft SQL Server MSSQL10_50.Имя экземпляра MSSQL LOG |
SQL SERVER 2005 по умолчанию журнал ошибок находится в Program Files Microsoft SQL Server MSSQL.n MSSQL LOG ERRORLOG и ERRORLOG.n Файл. Отличие MSSQL.n:
MSSQL.1:SQLSERVER
MSSQL.2:SSAS
MSSQL.3:SQLExpress
MSSQL.4:SSRS
Поэтому в целом вам нужно обращать внимание только на файлы журналов в каталоге MSSSQL.1.

Итак, где же находятся записи журнала электронной почты базы данных? Где находятся данные журнала истории заданий и журнал приложений Windows? Вы никогда не задумывались об этом?
Информацию журнала почты базы данных можно запросить из представления msdb.dbo.sysmail_event_log, которое по существу хранится в таблице [dbo]. [Sysmail_log].
sysmail_event_log
- SELECT log_id ,
- CASE event_type
- WHEN 0 THEN ‘success’
- WHEN 1 THEN ‘information’
- WHEN 2 THEN ‘warning’
- ELSE ‘error’
- END AS event_type ,
- log_date ,
- description ,
- process_id ,
- sl.mailitem_id ,
- account_id ,
- sl.last_mod_date ,
- sl.last_mod_user
- FROM[dbo].[sysmail_log] sl
- WHERE ( ISNULL(IS_SRVROLEMEMBER(N’sysadmin’), 0) = 1 )
- OR( EXISTS( SELECT mailitem_id
- FROM [dbo].[sysmail_allitems] ai
- WHERE sl.mailitem_id = ai.mailitem_id ) )
Информация журнала истории заданий хранится в таблице msdb.dbo.sysjobhistory, где поле run_status представляет статус выполнения задания.
0 = Ошибка
1 = Успех
2 = Повторить
3 = Отменено
4= В процессе
Все журналы приложений Windows фактически находятся в в том же месте% SystemRoot% System32 Winevt Log. Как и файл журнала приложения, расположенный в% SystemRoot% System32 Winevt Logs Application.evtx, как показано ниже,

Просмотр записей журнала
Просмотр записей журнала может гарантировать, что процессы (например, операции резервного копирования и восстановления, пакетные команды или другие сценарии и процессы) завершены успешно. Эта функция может использоваться для обнаружения любых текущих или потенциальных проблемных областей, включая сообщения автоматического восстановления (особенно, когда экземпляр SQL Server был остановлен и перезапущен), сообщения ядра или другие сообщения об ошибках на уровне сервера.
Метод 1. Просмотрите файл журнала ошибок.
Для информации журнала SQL SERVER, SQL SERVER AGENT вы можете перейти непосредственно в каталог журнала, чтобы найти файлы журнала ERRORLOG, SQLAGENT, а также напрямую открыть и просмотреть; а также Как и запись журнала приложения Windows , перейдите в каталог% SystemRoot% System32 Winevt Log, найдите соответствующий файл журнала и откройте его напрямую.
Метод 2: просмотр записей журнала через SSMS
Просмотр журналов, относящихся к общей активности SQL Server
- В обозревателе объектов разверните«менеджмент»с участием«Журнал SQL Server», Двойной щелчок«текущий<Дата / Время>”, ПокажетSQL Server、«Агент SQL»с участием«Событие Windows»Журнал.
Просмотр журналов, связанных с заданием
- В обозревателе объектов разверните«Агент SQL Server», Щелкните правой кнопкой мыши«операция», Затем щелкните«Посмотреть историю», Он покажет«История вакансий»с участием«Агент SQL»Журнал.
Просмотр журналов, связанных с планом обслуживания
- В обозревателе объектов разверните«менеджмент», Щелкните правой кнопкой мыши«План обслуживания», Затем щелкните«Посмотреть историю», Он покажет«План обслуживания»、«История вакансий»с участием«Агент SQL»Журнал.
Метод 3: просмотр с помощью скрипта
3.1 Файл журнала SQL SERVER можно просмотреть с помощью следующего сценария:
-Просмотр номера архива файла журнала
EXEC master.dbo.sp_enumerrorlogs
Вы можете использовать эту команду для просмотра размера файла журнала. Это очень полезно. Вы можете отсортировать файлы с ненормальными размерами.
— Просмотр содержимого журнала файла в соответствии с номером архива
EXEC master.dbo.xp_readerrorlog 1
— Просмотр записей журнала SQL SERVER в соответствии с job_id
SELECT * FROM msdb.dbo.sysjobhistory WHERE job_id=’36E9232B-CD5B-4646-9BED-B8242090FFF9′
3.2 Информацию журнала истории заданий можно просмотреть с помощью следующей хранимой процедуры или напрямую запросить соответствующую таблицу.
Например, я хочу просмотреть историю задания «ServerDiskCapacityCheck»
Code Snippet
- USE msdb ;
- GO
- EXEC dbo.sp_help_jobhistory
- @job_name = N’ServerDiskCapacityCheck’ ;
- GO
- »ò
- SELECT j.name AS [JOB_NAME] ,
- h.step_id AS [Step] ,
- h.step_name AS [STEP_NAM] ,
- h.MESSAGE AS [Message] ,
- [Status] = CASE WHEN h.run_status = 0 THEN ‘Failed’
- WHEN h.run_status = 1 THEN ‘Succeeded’
- WHEN h.run_status = 2 THEN ‘Retry’
- WHEN h.run_status = 3 THEN ‘Canceled’
- END,
- h.run_date AS [RunDate] ,
- h.run_time AS [RunTime] ,
- h.run_duration AS [RunDuration]
- FROM sysjobs j
- INNER JOIN sysjobhistory h ON h.job_id = j.job_id
- WHERE h.run_date>=CONVERT(CHAR(8),GETDATE()-1,112) AND h.run_status<>1
- /* WHERE j.name = ‘Job_Name’ */
- ORDER BYh.run_date, h.run_time
3.3 Просмотр записи почты базы данных
SELECT * FROM msdb.dbo.sysmail_event_log;
Управление записями журнала
Установите максимальное количество файлов журнала ошибок
1: вОбозреватель объектов, Подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните экземпляр.
2: В параметре «Управление» выберите «Журнал SQL SERVER», щелкните правой кнопкой мыши, чтобы выбрать конфигурацию. Кстати, во многих онлайн-материалах говорится, что SQL SERVER по умолчанию сохраняет первые 6 файлов журнала, но я проверил SQL SERVER 2005 и SQL SERVER 2008, и оба по умолчанию сохраняют 30. Иногда Проверять и экспериментировать нужно самому, а не всем. Предполагается, что этот оператор является конфигурацией SQL SERVER 2000.

Конечно, вы также можете использовать команду для установки:
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'NumErrorLogs', REG_DWORD, 10
GO
Задайте каталог хранения файла журнала ошибок
1: вОбозреватель объектов, Подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните экземпляр.
2: Разверните агент «SQL SERVER».
3: Щелкните правой кнопкой мыши «Журнал ошибок» и выберите параметры конфигурации, как показано ниже:

4: В поле «файл журнала ошибок» введите новый путь и имя файла или используйте кнопку обзора (…) для поиска. После перезапуска службы агента SQL SERVER агент SQL SERVER записывает в новый файл журнала.

Установить журнал истории заданий
- вОбозреватель объектов, Подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните экземпляр.
- Щелкните правой кнопкой мыши«Агент SQL Server», Затем щелкните«Атрибуты»。
- в«Свойства агента SQL Server»В диалоговом окне выберите«исторический рекорд»страница.
- Выберите один из следующих вариантов:
- Выбрано«Ограничить размер журнала истории заданий», А затем введите максимальное количество строк в журнале истории заданий и максимальное количество строк на задание.
- Выбрано«Автоматически удалять историю агента», А затем укажите период времени. Таким образом, записи истории до этого периода времени будут удалены из журнала.

Почему взрывается файл журнала ошибок?
Я говорю здесь не только о взрыве определенного файла журнала ошибок, но и о каталоге Program Files Microsoft SQL Server MSSQL.nПространство, занимаемое MSSQL LOG, резко возросло. Если вы обычно не обращаете внимания на эти журналы ошибок и никогда не ведете записи журнала ошибок, то вполне вероятно, что пространство, занимаемое им, очень велико, настолько велико, что это вас удивит. Я видел десятки гигабайт, поэтому конкретные причины могут быть следующими (если вы столкнулись с другими ситуациями, добавьте их):
1: при возникновении внутренней ошибки SQL будет создано много файлов DUMP, как показано ниже.

2: Сервер базы данных с высокой доступностью может редко останавливаться, и вы не выполняете регулярную очистку, очищаете эту информацию журнала ошибок, тогда рост файла ERRORLOG.n / SQLAGENT.n будет очень большим. Таким образом, администратору базы данных будет сложнее использовать журнал ошибок для поиска информации, а производительность будет снижена после загрузки и записи журнала.
3: На самом деле, есть другая ситуация: если IP-адрес вашей базы данных открыт во внешней сети, вы подвергнетесь атаке из-за большого количества попыток входа в sa, а также будет сгенерировано большое количество сообщений журнала ошибок аудита.
4: Некоторые файлы SQL SERVER PROFILE не удаляются .. Конечно, эта суть не имеет ничего общего с всплеском файлов журналов, но имеет какое-то отношение к размеру папки LOG.
Как очистить журнал ошибок:
Для журнала SQL SERVER, записи журнала SQL SERVER AGENT, Microsoft предоставляет хранимую процедуру sp_cycle_errorlog для реализации цикла журнала. Функция этой хранимой процедуры — закрыть текущий файл журнала ошибок и зациклить номер расширения журнала ошибок (как при перезапуске сервера). Каждый раз при запуске SQL Server текущий журнал ошибок будет переименован вerrorlog.1;errorlog.1 Становитсяerrorlog.2,errorlog.2 Становитсяerrorlog.3,И так далее. Последний errorlog.n будет удален.sp_cycle_errorlog Позволяет циклически просматривать файл журнала ошибок без необходимости останавливать и запускать сервер.
Кроме того: если журнал слишком велик, это означает, что вы не усекли журнал ошибок. Журнал ошибок можно усечь. Введите DBCC ERRORLOG в свою базу данных.
Каждый раз, когда выполняется текущий журнал ошибок, текущий журнал ошибок закрывается и создается новый журнал ошибок . Вы можете удалить только журнал ошибок ERRORLOGn. Журнал без номера является используемым журналом. Если вы удалите его, будет сообщено об ошибке. Он относительно большой, просто DBCC ERRORLOG, а затем он станет ERRORLOG + number, вы можете удалить его, и рекомендуется поместить эти ERRORLOG в другие буквы диска для лучшего управления.
Для журналов приложений Windows обычно есть настройки размера по умолчанию, и они могут быть перезаписаны по мере необходимости. Эти конфигурации обычно также являются оптимальными конфигурациями. Так что, если у вас нет особых потребностей, не беспокойтесь об этом.

Для регистрации почты хранимые процедурыsysmail_delete_log_spпредоставлятьУдалить события из почтового журнала базы данных. Удалить все события в журнале или удалить те события, которые соответствуют определенной дате или условию типа
sysmail_delete_log_sp [ [ @logged_before = ] ‘logged_before‘ ]
[, [ @event_type = ] ‘event_type‘ ]
Удалите все журналы шагов задания агента SQL Server, указанные в параметре. Используйте эту хранимую процедуру для обслуживанияmsdbВ базеsysjobstepslogsСтол.
sp_delete_jobsteplog { [ @job_id = ] ‘job_id’ | [ @job_name = ] ‘job_name’ }
[ , [ @step_id = ] step_id | [ @step_name = ] ‘step_name’ ]
[ , [ @older_than = ] ‘date’ ]
[ , [ @larger_than = ] ‘size_in_bytes’ ]
Удалить историю вакансий
Удалить историю конкретного задания YourSQLDba_LogBackups.
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
@job_name = N’YourSQLDba_LogBackups’ ;
GO
В следующем примере этот процесс будет выполнен без параметров для удаления всех записей истории.
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory ;
GO
Удалите все журналы шагов задания агента SQL Server, указанные в параметре. Используйте эту хранимую процедуру для обслуживанияmsdb В базеsysjobstepslogs стол.Если вы хотите хорошо поддерживать записи журнала, вы можете интегрировать вышеупомянутые идеи в хранимую процедуру, а затем настроить задание на регулярную очистку записей журнала.Далее давайте взглянем на метод YourSQLDba.
Code Snippet
- USE [YourSQLDba]
- GO
- /****** Object: StoredProcedure [yMaint].[LogCleanup] Script Date: 05/28/2013 18:36:21 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ——————————————————————————
- — yMaint.LogCleanup (for entries older than 30 days)
- — Mail logs
- — Backup history logs
- — Job history
- — Cycle SQL Server error log
- ——————————————————————————
- create proc [yMaint].[LogCleanup]
- @jobNo Int
- as
- Begin
- declare @d nvarchar(8)
- declare @lockResult int
- declare @sql nvarchar(max)
- Begin try
- exec yMaint.LockMaintDb@jobNo=@jobNo, @lockType=‘C’, @DbName = ‘LogCleanUpStep’, @Result = @lockResult output
- If @lockResult > 0
- Return;
- Set @sql = ‘Exec msdb.dbo.sysmail_delete_log_sp @logged_before = «<d>»;’
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Cleanup log entries older than 30 days, begins with mail’
- , @sql = @sql
- , @JobNo = @JobNo
- Set @sql = ‘EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = «<d>»;’
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Cleanup log entries older than 30 days, for mailitems’
- , @sql = @sql
- , @JobNo = @JobNo
- — clean backup history
- Set @sql = ‘exec Msdb.dbo.sp_delete_backuphistory @oldest_date = «<d>» ‘
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Cleanup log entries older than 30 days, for backup history’
- , @sql = @sql
- , @JobNo = @JobNo
- — clean sql agent job history
- Set @sql = ‘EXECUTE Msdb.dbo.sp_purge_jobhistory @oldest_date = «<d>»‘
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Cleanup log entries older than 30 days, for job history’
- , @sql = @sql
- , @JobNo = @JobNo
- — clean job maintenance job history (SQL Server own maintenance)
- Set @sql = ‘EXECUTE Msdb.dbo.sp_maintplan_delete_log null,null,»<d>»‘
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Cleanup log entries older than 30 days, for SQL Server job maintenace plans’
- , @sql = @sql
- , @JobNo = @JobNo
- — archive current log, and start a new one
- Set @sql = ‘Execute sp_cycle_errorlog’
- Set @sql = replace(@sql, ‘<d>’, convert(nvarchar(8), dateadd(dd, —30, getdate()), 112))
- Set @sql = replace(@sql, ‘»‘, »»)
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @info = ‘Recycle Sql Server error log, start a new one’
- , @sql = @sql
- , @JobNo = @JobNo
- Delete H
- From
- (
- Select distinct JobNo —
- From Maint.JobHistory
- Where JobStart < dateadd(dd, —30, getdate())
- ) as T
- join
- Maint.JobHistory H
- On H.JobNo = T.JobNo
- End try
- Begin catch
- exec yMaint.UnLockMaintDb@jobNo=@jobNo, @DbName = ‘LogCleanUpStep’
- Exec yExecNLog.LogAndOrExec
- @context = ‘yMaint.LogCleanup’
- , @Info = ‘Error caught in proc’
- , @err = ‘?’
- , @JobNo = @JobNo
- End Catch
- exec yMaint.UnLockMaintDb@jobNo=@jobNo, @DbName = ‘LogCleanUpStep’
- End — yMaint.LogCleanup
- GO