2016-10-14 34 views
0

我有一個表有5列與nvarchar(255)數據類型。在標準報告中保留的KB12,74576數據9,79,344。當我改變所有列到VARCHAR(255)保留KB升至15,54,687數據也增加。然後我重新將所有列的數據類型更改爲nvarchar(255),但保留的KB和Data再次增加。我的問題是,無論何時我更改列的數據類型,無論是從nvarcharvarchar或反之亦然,標準報告顯示保留KB和數據增加。SQL表大小總是增加

回答

0

大小可以通過收縮數據庫可以減少:

  • 打開SQL Server Management Studio中
  • 選擇數據庫
  • 打開上下文菜單
  • 單擊任務
  • 點擊收縮
  • 點擊數據庫

這也可以通過執行DBCC SHRINKDATABASE命令來實現。

如果要從特定表格回收空間,請使用'DBCC CLEANTABLE'命令。

關於最後一個命令的更多信息: https://msdn.microsoft.com/en-us/library/ms174418.aspx

+2

我會避免不惜一切代價對生產數據庫執行此操作。這是非常危險的建議作爲一種選擇,而不是確保他們知道他們將經歷大量的分裂。這是關於這個主題的數百篇文章之一。 http://straightpathsql.com/archives/2009/01/dont-touch-that-shrink-button/ –

+0

對於生產數據庫你確實要小心。考慮到Muhammad更改列數據類型的事實,我認爲它不涉及生產數據庫。 – Bouke

+0

我的意思是,當你提出這樣一個有巨大潛在問題的建議時,你可以通過溝通這些注意事項來使你的答案更加完整。如果你認爲這不是生產,但事實上它們可能在生產中運行,然後想知道爲什麼他們的整個系統現在已經癱瘓了。 –

0

爲nvarchar存儲Unicode數據。如果您有存儲UNICODE或多語言數據的要求,則可以選擇nvarchar。 Varchar存儲ASCII數據,並且應該是您正常使用的數據類型。關於磁盤使用情況,nvarchar使用每個字符2個字節,而varchar使用1.

+0

我知道這就是爲什麼我很困惑,因爲通過將數據類型從nvarchar更改爲varchar,表大小必須減少,而增加。 –

+0

它不會釋放空間而不縮小文件。 DBCC收縮命令。 –

+0

在這種情況下,尺寸必須與以前相同,但它爲什麼會增加。 –