DECLARE @filename VARCHAR(255)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
--Check if the data and log files auto-growed. Look for tempdb, log files etc.
SELECT
gt.ServerName
, gt.DatabaseName
, gt.TextData
, gt.StartTime
, gt.Success
, gt.HostName
, gt.NTUserName
, gt.NTDomainName
, gt.ApplicationName
, gt.LoginName
FROM [fn_trace_gettable](@filename, DEFAULT) gt
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id
WHERE EventClass in ( 92, 93 ) --'Data File Auto Grow', 'Log File Auto Grow'
ORDER BY StartTime;
--
是的,你应该看看关于这个主题的优秀白皮书,虽然它提到了在线索引重建,但它仍然有很多有用的信息
http://technet.microsoft.com/en-us/library/cc966402.aspx
如果日志文件自动增长,那么您可以在操作完成后使用默认跟踪找到该信息。
它不仅可以检测索引 DDL 操作是否增加日志文件,它是默认的操作行。所有索引操作都记录在使用完整恢复模型的数据库中。
我建议您阅读 MSDN 上的以下文章:Determining Index Disk Space Requirements。
从那篇文章的第 3 章 -索引操作的事务日志磁盘空间我将引用:
"大规模索引操作会产生大量数据负载,从而导致事务日志快速填满。为确保可以回滚索引操作,在索引操作完成之前不能截断事务日志;但是,日志可以在索引操作期间进行备份。因此,事务日志必须有足够的空间来存储索引操作事务和索引操作期间的任何并发用户事务。这对于离线和在线索引操作都是如此。因为在离线索引操作期间无法访问基础表,所以用户事务可能很少,日志可能不会增长得那么快。联机索引操作不会阻止并发用户活动,因此,大规模联机索引操作与大量并发用户事务相结合会导致事务日志持续增长,而没有截断日志的选项。“