Наши базы данных 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.