Sql-Server

如何確定多文件文件組中的對象分佈?

  • September 12, 2013

我希望消除數據庫中文件組中的無關數據文件,但不想使用可怕的 DBCC SHRINKFILE 方法,我更喜歡將索引重建為備用 FG,使用 EMPTYFILE 執行收縮,然後刪除文件然後重建回原始文件組。有沒有一種方法可以辨識哪些表/索引對象正在填充目標數據庫文件中使用的頁面/範圍?

出於所有意圖和目的,您應該假設給定文件組中每個對象的部分將分佈在該文件組中的所有文件中。您也許可以編寫一些腳本來證明一兩個較小的表在文件 5 或文件 8 上沒有任何數據,但目的是什麼?我說編寫一個腳本來重建該文件組中的所有表會更容易。

UNDOCUMENTED(!)DBCC IND可以為您提供該資訊。

DBCC IND (‘databasename’, ‘tablename′, 1);

第三個參數是您要查看的索引的 index_id。DBCC IND索引使用的每頁返回一行。第一列“PageFID”是該頁面所在的文件 ID。

更多資訊:http ://www.sqlskills.com/blogs/paul/inside-the-storage-engine-using-dbcc-page-and-dbcc-ind-to-find-out-if-page-splits-ever -回滾/

除此之外,我同意亞倫。用於DBCC SHRINKFILE清空文件。之後重建受影響的索引。

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