SQL Server 上 .ndf 文件的最後修改日期錯誤
我有 SQL Server 數據庫,我們有很多表。為了提高性能,我創建了不同的文件組,其中包含不同磁碟上的文件,僅用於索引。我今天在不同的文件組中創建了新索引。但是,我仍然看到文件的最後修改日期為過去 1 個月。我檢查了文件名,我擔心 SQL Server 沒有設置文件的上次修改日期。新索引工作正常,但文件仍然沒有顯示更新的修改日期。
好的,我剛剛學到了一些新東西,SQL Server 的數據目錄中的所有文件都沒有顯示上次修改日期到最近的日期,而我的數據庫正在不斷更新。所有日期均為 1 個月大。伺服器的系統時鐘是正確的。
把數據文件想像成一個容器,就像你的冰箱一樣。當牛奶變質時,冰箱不會告訴你(好吧,也許 Jetsons 的冰箱會告訴你)——你需要檢查一下。
對於 SQL Server,Windows 中的時間戳與您在文件中更改的數據無關;它與文件本身上次更改的時間有關,例如服務重新啟動,或者 - 更常見的是 - 增長或收縮事件(使用者或系統啟動)。當您更改文件內的數據時可能會發生這種情況,但不會每次都發生(除非您將自動增長設置為 1 MB 並且您不斷添加比這更多的數據)。如果您創建了索引並且文件中有可用空間,它可以使用現有空間而無需更改容器,因此 Windows 沒有任何理由知道它,更不用說更新時間戳了。
簡而言之,你應該停止擔心。這就是 SQL Server 的工作方式。下面是在不關閉 SQL Server 服務的情況下更新時間戳的展示:
SQL Server 在打開數據庫文件時不使用預設訪問路徑。相反,它使用自己的低級驅動程序來獲得盡可能高的性能。因此,您不能依賴視窗顯示的有關文件的任何資訊。而是查閱適當的系統視圖和 DMV。
但是,我不知道有任何方法可以通過 SQL 確定特定文件的最後寫入時間。