我们的SharePoint数据库被设置为(无意义的)1MB默认自动增长开箱即用,我需要“说服”我们的应用程序所有者,这是错误的。 有没有办法监视SQL Server的自动增长活动?
我希望能够报告1MB设置发生这种活动的频率。
作为你的进一步的弹药,结帐这篇博客文章,我讨论了数据文件的自动增长: 数据文件大小pipe理的重要性 。
日志文件自动增长在SQL日志或应用程序事件日志中报告。 您还可以使用SQL Trace或SQL Profiler等事件来监视SQL事件。 这是一个讨论监视SQL事件的MSDN文章。
编辑:在应用程序事件日志中查找自动增长取消事件的事件ID 5144和成功/完成自动增长事件的5145。
编辑2:要在您的SQL日志中查找数据库日志文件auogrowth事件,您可以使用此:
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日志logging。 如果你没有看到autogrowth事件,那么在你的日志所涵盖的时间范围内,你几乎没有发生过任何事情。 请参阅编辑我的答案,您可以使用SQL查找SQL日志中的自动增长。
这取决于你在说什么。
根据我的经验,SQL Server没有按照build议将自动增长logging到ERRORLOG ,而是logging在默认跟踪中,并且可以禁用和启用默认跟踪。
要检查是否已启用,请参阅:
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的参数是当前(或存档)跟踪的名称。
您可以find当前跟踪的path,如下所示:
SELECT path FROM sys.traces WHERE is_default = 1;
日志文件自动增长在SQL日志或应用程序事件日志中报告。 您还可以使用SQL Trace或SQL Profiler等事件来监视SQL事件。