Sql-Server

SSMS 磁碟使用情況報告不顯示自動增長事件

  • February 13, 2019

一段時間以來,我懷疑 SSMS 中的磁碟使用情況報告已停止顯示自動增長事件。為了測試,我創建了一個具有非常小的自動增長設置的空數據庫。然後我將大量數據插入到數據庫中的一個表中,這樣我就知道它必須增長。查看數據庫的文件屬性時文件較大,但磁碟使用情況報告未顯示任何自動增長事件。

然後我嘗試從這篇文章中執行 Aaron Bertrand 的腳本,這清楚地顯示了每個自動增長事件。

那麼,為什麼磁碟使用情況報告不會顯示相同的增長?有什麼建議?順便說一句,它是 SQL Server 2014 SP2。

磁碟使用情況報告的邏輯已寫入 S​​SMS,雖然我們不知道 RDL 的樣子(以及是否進行了任何過濾),但我使用 Profiler 抓取了 SSMS 2016 發送的此查詢:

if (select convert(int,value_in_use) from sys.configurations where name = 'default trace enabled' ) = 1
begin
declare @curr_tracefilename varchar(500) ;
declare @base_tracefilename varchar(500) ;
declare @indx int ;

select @curr_tracefilename = path from sys.traces where is_default = 1 ;
set @curr_tracefilename = reverse(@curr_tracefilename);
select @indx  = patindex('%\%', @curr_tracefilename) ;
set @curr_tracefilename = reverse(@curr_tracefilename) ;
set @base_tracefilename = left( @curr_tracefilename,len(@curr_tracefilename) - @indx) + '\log.trc' ;


   select  (dense_rank() over (order by StartTime desc))%2 as l1
,       convert(int, EventClass) as EventClass
,       DatabaseName
,       Filename
,       (Duration/1000) as Duration
,       StartTime
,       EndTime
,       (IntegerData*8.0/1024) as ChangeInSize
from ::fn_trace_gettable( @base_tracefilename, default )
left outer join sys.databases as d on (d.name = DB_NAME())
where EventClass >=  92      and EventClass <=  95        and ServerName = @@servername   and DatabaseName = db_name()  and (d.create_date < EndTime)
order by StartTime desc ;

這與 Aaron 的腳本沒有本質區別,我看不出它如何返回不同的結果。在我看來,即使軌跡翻轉,它仍然會迭代所有軌跡(並且它們不會在幾分鐘甚至幾小時的測試空間內翻轉 5 倍)。

引用自:https://dba.stackexchange.com/questions/149384