因此,一個很大的問題剛剛出現了我們正在使用的一些數據庫。出於某種原因,人們的數據庫已經發展到一個荒謬的文件大小,沒有任何數據表的變化。雖然我不知道是什麼原因突然造成這種情況,但我現在更關心清除其使用的磁盤空間。我運行了sp_spaceused,並且追蹤了2個表中的1個(這取決於數據庫)的罪魁禍首。對於每個數據庫,其中一個表分配超過半個GB到預留空間,而數據只有50 MB。它顯示index_size在〜113 MB。該表沒有聚簇索引,並且具有大約15列,除了長度爲255的nvarchar類型的2列(表中通常爲null或空)外,所有長度都相對較小。SQL Server 2000,表分配太多空間
我試過運行DBCC shrinkdatabase和截斷表,但它沒有做任何事情。我已經研究了這一點,其他一些人也遇到了這個問題,但是如果shrinkdatabase沒有解決這個問題,那麼他們也找不到解決方案。
讓我知道是否還有其他人需要了解表或數據庫設置。我不知道還有什麼可以嘗試的,這對我們來說是一個重大問題,因爲人們的數據庫突然佔據了他們以前的空間的10倍。
編輯: 試圖運行DBCC DBREINDEX並試圖更改爲通過Enterprise Manager聚簇索引後,我得到一個錯誤消息說:
無法爲數據庫「DB」分配新頁。文件組PRIMARY中不再有可用的頁面。可以通過刪除對象,添加其他文件或允許文件增長來創建空間。
我試過從這個表中刪除行,它對錶的大小沒有影響。正如預期的那樣,日誌文件增加,但這是對錶格大小的唯一改變。
我將如何去重建表或更改爲聚集索引?在這個過程中丟失數據是否有風險? – gdawgrancid
正如我所說的,您需要共享關於您的表和現有索引的更多細節,以便獲得準確的語法,以及有關列,查詢以及如何添加數據的詳細信息,如果您希望在上下文中指導您應該放置集羣的位置指數。爲了將聚集索引添加到堆中,語法就是'CREATE [UNIQUE] CLUSTERED INDEX x ON dbo.y(z);'但是您可能希望主鍵被聚集,所以語法將會是不同。沒有數據丟失的風險,但通常沒有任何明確的風險。備份在修改數據庫時始終是您最好的朋友。 –
經過一番修改並且必須更改數據庫的最大文件大小後,我才能夠獲得表上的聚集索引,然後DBCC dbshrink在運行幾次後就能夠縮小大小。我仍然對這件事情有些問題,但我開始認爲它與SQL Server 2000的限制或錯誤有關 – gdawgrancid