2017-08-14 171 views
1

我已經達到了我的SQL Server 2008 R2 Express數據庫上的文件大小限制,我相信它是10Gb。我知道這是因爲我在事件日誌中看到事件ID 1101。SQL Server 2008 R2 Express 10GB文件大小限制

的數據庫,因爲在文件組「主要」磁盤空間不足

「ExchangeBackup」我已刪除了部分歷史數據來解決問題的,但現在它只是無法分配了新的一頁臨時修復。一個表(PP4_MailBackup)遠遠大於其他表,因此當我在12個月前創建此數據庫時,我將此錶轉換爲文件流表,並將數據存儲在文件系統中的文件組之外。這似乎工作正常,直到我收到錯誤和新的數據不再被添加到我的數據庫。

當我做一個關於表大小的報告時,我看到保留(KB)列加起來將近10GB。

保存我的FILESTREAM數據的文件夾爲176 GB

數據庫.mdf文件確實是10GB。

有沒有人有任何想法爲什麼表PP4_MailBackup仍然使用近7GB?

這裏是 「標準報告 - >磁盤使用情況報告」 此數據庫:

在此先感謝

大衛

enter image description here

更新

這裏一些更多的信息。

此表中有868,520行。

這個cmd返回1,所以我假設Ansipadding打開。我從來沒有改變這個從默認。

SELECT SESSIONPROPERTY('ANSI_PADDING') 

的列定義如下

enter image description here

即使每列的每個記錄填寫完整的記錄大小,通過我的粗略計算表將約爲4125470000字節。我知道nvarchar列僅使用實際需要的空間。

我仍然缺少很多空間。

+0

該表似乎很清楚地解釋了爲什麼這個表佔用'7GB'。作爲一個方面說明,LDB文件也可能會計入您的數據庫的10GB存儲限制。 –

+0

你好,附件解釋說,PP4_Mailbackup表是IS使用7GB,但它沒有解釋爲什麼。此表是文件流啓用。我應該期望176GB文件流表在數據庫中仍佔用7GB嗎?日誌文件不是文件組的一部分,所以我懷疑它包含在內。目前爲1GB。我經常備份這個數據庫,以便調查爲什麼日誌不會被截斷。 –

+0

日誌文件大部分是可用空間,因此它正在被正確管理。我看不出縮小它的意義。 –

回答

0

不是一個真正的答案,而是更多的結論。

我已經放棄了這個問題,並且自己決定刪除數據以保持10GB的主文件大小限制。我發現nvarchar列爲每個字符存儲2個字節,以便處理Unicode字符,儘管它們只使用所需的空間並且不用空格填充列。所以這將解釋我無法找到的一些空間。

我試圖通過添加具有正確類型的數據的新列來將我的char(500)列轉換爲varchar(500),然後刪除舊列。這工作,但表實際上變得更大,因爲刪除列只是一個元數據更改,並不實際刪除數據。要恢復空間,我需要創建一個新表並複製數據,然後刪除舊錶,當然,我沒有足夠的空間在主文件中這樣做。

我想過把表複製到臨時數據庫刪除原來的表,然後複製它,但臨時數據庫不支持文件列(至少據我所知),所以我需要在臨時數據庫表中保存所有170GB 。這聽起來像一個可疑的解決方案,我的測試服務器沒有足夠的空間存儲臨時數據庫的分區。我無法找到SQL 2008 Express上tempdb的文件大小限制上的任何內容,但是在這一點上它變得太難了。

相關問題