天天看點

為什麼你SQL Server的資料庫檔案的Date modified沒有變化呢?

在SQL Server資料庫中,資料檔案與事務日志檔案的修改日期(Date Modified)是會變化的,但是有時候你會發現你的資料檔案或日志檔案的修改日期(Date Modified)幾個月甚至是半年以上都沒有變化了,如下截圖所示:

<a href="http://images2015.cnblogs.com/blog/73542/201701/73542-20170105121715222-1504647271.png"></a>

為什麼呢?不會是什麼bug吧? 相信很多人都會有這樣的反應。下面我們通過實驗來看看資料庫的資料檔案與事務日志檔案在什麼情況或條件下, 修改日期(Date Modified)才會變化.首先建立一個TEST資料庫,檢視其資料檔案或事務日志檔案的修改日期如下:

<a href="http://images2015.cnblogs.com/blog/73542/201701/73542-20170105121716425-358092804.png"></a>

我們先檢視一下資料庫資料檔案大小、空間使用情況,依此以為參照,判别資料庫資料檔案或事務日志的增長情況

<a href="http://images2015.cnblogs.com/blog/73542/201701/73542-20170105121717362-937770797.png"></a>

我們通過一個大批量插入操作,使資料庫的資料檔案實作自增長,如下所示,當資料庫的資料檔案或事務日志檔案增長時,其修改日期就會變化。

<a href="http://images2015.cnblogs.com/blog/73542/201701/73542-20170105121718206-1468555367.png"></a>

<a href="http://images2015.cnblogs.com/blog/73542/201701/73542-20170105121719081-1459516375.png"></a>

然後你用執行一些其他DML操作,前提是不要使資料檔案增長,那麼你會發現資料庫資料檔案與事務日志檔案的修改日期是不會變化的,也就是說即使資料庫的資料檔案和日志檔案有讀寫操作,它的修改日期是不會變化的,這個跟普通檔案是有差別的。

是以即使你看到你的資料庫裡面資料檔案或事務日志檔案的修改日期是幾天前、甚至是幾個月前的日期,也不要大驚小怪,這個并不代表這這個資料庫并沒有任務事務操作或活動事務,而是僅僅因為資料庫的資料檔案和事務日志檔案沒有擴充而已。因為可能資料檔案或事務日志檔案有大量空間可用,或是最近資料增長很少的緣故。

那麼還有那些操作會修改資料庫的資料檔案與事務日志檔案的修改時間(Date Modified)呢? 總結歸納起來有下面一些操作:

1:資料檔案或事務日志檔案的自增長或調整大小(使用SQL語句調整資料檔案大小也會改變修改時間)

2:資料檔案或事務日志檔案的收縮會修改資料檔案的修改日期。

3:分離附加資料庫或脫機聯機操作會修改資料檔案的修改日期。

4:重新開機資料庫服務也會修改資料檔案的修改日期(有些資料庫的資料庫檔案的修改日期會變化,有些也不會變化)

當然,應該還有一些其他操作也有可能導緻資料庫資料檔案或事務日志檔案的修改日期變化,沒法一一實驗測試驗證,在此略過。

PS:本文是同僚想以資料檔案的修改日期來判斷資料庫最近的活動時間,結果發現這麼一個現象,是以做了一下這方面的研究和總結。