如何解决当分配的空间阻止您这样做时,更改 Azure SQL 数据库层的最佳方法是什么?
我们的数据库最近太满了,我们需要删除一些数据。当我们尝试这样做时,我们得到了一个关于大小配额的错误,如下所示:
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)
然后尝试缩小数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。