簡體   English   中英

當分配的空間阻止您這樣做時,更改 Azure SQL 數據庫層的最佳方法是什么?

[英]What is the best way to change the tier of an Azure SQL Database when allocated space prevents you from doing so?

我們的數據庫最近太滿了,我們需要刪除一些數據。 當我們嘗試這樣做時,我們收到有關大小配額的錯誤,如下所示:

Msg 40544, Level 17, State 12, Line 1
The database '<My Database>' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.

當我們尋找解決方案時,我們發現了這個資源( https://social.technet.microsoft.com/wiki/contents/articles/1541.windows-azure-sql-database-connection-management.aspx ),它說“當機器上的總數據庫大小超過機器上可用總空間的 90% 時,所有數據庫都變為只讀的。 負載均衡器確保通過跨機器平衡數據庫來解決問題。”

當時,我們的數據庫位於 S4 層上,最大可達 1 TB。 我們真的很想避免這種情況,但我們決定將數據庫更改為 P11 層,這將大小增加到 4TB,但每月的成本從約 450 美元增加到約 7000 美元。

我們能夠刪除我們需要的數據,但是當我們嘗試將層從 P11 恢復到 S4 時,我們被告知“您的數據庫的存儲大小不能小於當前分配的大小。”

實際上,由於某種原因,分配的空間現在為 1.13 TB

在此處輸入圖像描述

然后,令我沮喪的是,我發現了這個( https://techcommunity.microsoft.com/t5/azure-database-support-blog/azure-sql-database-or-sql-managed-instance-database-used-data /ba-p/2162130 )

“可用於存儲數據庫數據的格式化文件空間量。分配的空間量會自動增長,但在刪除后不會減少。這種行為確保了未來的插入速度更快,因為不需要重新格式化空間。”

我們真的需要回到 S4 層數據庫。 我們最壞的計划是我們創建一個全新的數據庫,將我們的數據遷移到那個新數據庫,更新對舊數據庫的任何引用以使用新數據庫,然后刪除舊數據庫,但是有沒有人知道更好的解決方法問題?

請嘗試收縮數據庫和日志文件。

DBCC SHRINKFILE (log, 0)

DBCC SHRINKDATABASE (N'db1')

相應地調整數據庫的 MAX SIZE:

ALTER DATABASE DATABASE_NAME
MODIFY (EDITION='BUSINESS', MAXSIZE=750 GB)

之后嘗試縮小數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM