Назад | Перейти на главную страницу

Как я могу получить предупреждение, когда в базе данных SQL Server происходит автоматический рост?

Наши базы данных SharePoint по умолчанию настроены на (бессмысленный) автоматический рост размером 1 МБ, и мне нужно «убедить» владельца приложения, что это неправильно. Есть ли средства для отслеживания активности автоматического роста SQL Server?

Я хотел бы иметь возможность сообщать, как часто происходит это действие при настройке 1 МБ.

Об автоматическом росте файла журнала сообщается в журналах SQL или журнале событий приложения. Вы также можете использовать такие вещи, как SQL Trace или SQL Profiler, для отслеживания событий SQL. Вот статья MSDN, в которой обсуждается мониторинг событий SQL.

РЕДАКТИРОВАТЬ: В журнале событий приложений найдите событие с кодом 5144 для событий отмены автоматического роста и 5145 для успешных / завершенных событий автоматического роста.

РЕДАКТИРОВАТЬ2: Чтобы искать события auogrowth файла журнала db в журнале SQL, вы можете использовать это:

EXEC xp_readerrorlog 0,1,'autogrow'

Увеличьте 0, чтобы xp_readerrorlog использовал архивные файлы журнала ошибок. От 0 до (n-1), где n - количество имеющихся у вас файлов журнала ошибок.

Вы также можете настроить уведомления о событиях для автоматического роста. Что-то вроде этого:

CREATE EVENT NOTIFICATION data_file_autogrow_notifier
ON DATABASE
FOR DATA_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

или для файла журнала:

CREATE EVENT NOTIFICATION log_file_autogrow_notifier
ON DATABASE
FOR LOG_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

Где NotifyAutogrow - это имя экземпляра компонента Service Broker. Больше информации Вот. Вам нужно будет настроить эту службу для своей среды.

В качестве дополнительной амуниции ознакомьтесь с этой записью в блоге, в которой обсуждается автоматический рост файлов данных: Важность управления размером файла данных.

Просто он всегда включен, вы не можете отключить ведение журнала SQL. Если вы не видите событий автоматического роста, скорее всего, у вас их не было в те временные рамки, которые охватывает ваш журнал. См. Редактирование моего ответа для sql, которое вы можете использовать для поиска автоматического роста в журнале SQL.

Это зависит от того, о чем вы говорите.

По моему опыту, SQL Server не регистрировал автоматический рост в ERRORLOG как было предложено, вместо этого он регистрируется в трассировке по умолчанию, и трассировку по умолчанию можно отключить и включить.

Чтобы проверить, включен ли он, см .:

select name, value_in_use
from sys.configurations
where name='default trace enabled'

Если он отключен, вы можете включить его:

sp_configure 'default trace enabled', 1
go

Не забывай бежать RECONFIGURE потом.

Чтобы проверить autogrow события, которые вы можете использовать:

SELECT databaseid, filename, SUM(IntegerData*8) AS Growth, Duration, StartTime
FROM ::fn_trace_gettable('C:\SQL Server\MSSQL10_50.INSTANCENAME\MSSQL\Log\log_4.trc', default)
WHERE EventClass = 92 OR EventClass = 93
GROUP BY databaseid, filename, IntegerData, Duration, StartTime

Где параметр для fn_trace_gettable это имя текущей (или архивной) трассы.

Вы можете найти путь к текущей трассе следующим образом:

SELECT path FROM sys.traces WHERE is_default = 1;

Об автоматическом росте файла журнала сообщается в журналах SQL или журнале событий приложения. Вы также можете использовать такие вещи, как SQL Trace или SQL Profiler, для отслеживания событий SQL.