Sql server 当分配的空间阻止您更改Azure SQL数据库层时,更改该层的最佳方法是什么?

Sql server 当分配的空间阻止您更改Azure SQL数据库层时,更改该层的最佳方法是什么?,sql-server,database,azure,azure-sql-database,azure-sql-server,Sql Server,Database,Azure,Azure Sql Database,Azure Sql Server,我们的数据库最近太满了,我们需要删除一些数据。当我们尝试这样做时,我们得到了一个关于大小配额的错误,如下所示: 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

我们的数据库最近太满了,我们需要删除一些数据。当我们尝试这样做时,我们得到了一个关于大小配额的错误,如下所示:

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.
Msg 40544,17级,状态12,第1行
数据库“”已达到其大小配额。分区或删除数据,删除索引,或查阅文档以获得可能的解决方案。
当我们寻找解决方案时,我们发现了这个资源(),它说“当一台机器上的数据库总大小超过机器上总可用空间的90%时,所有数据库都变成只读的。负载平衡器通过跨机器平衡数据库来确保这种情况得到解决。”

当时,我们的数据库位于S4层,其大小可达1 TB。我们确实想避免这种情况,但我们决定将数据库更改为P11层,这将大小增加到4TB,但将每月成本从约450美元增加到约7000美元

我们能够删除需要删除的数据,但当我们试图将层从第11页恢复到S4时,我们被告知“数据库的存储大小不能小于当前分配的大小。”

事实上,出于某种原因,分配的空间现在为1.13 TB

然后,令我非常沮丧的是,我发现了这个()

可用于存储数据库数据的格式化文件空间量。分配的空间量会自动增加,但在删除后不会减少。此行为可确保以后的插入速度更快,因为空间不需要重新格式化


我们真的需要回到S4层数据库。我们最糟糕的计划是创建一个全新的数据库,将数据迁移到该新数据库,更新对旧数据库的任何引用以使用新数据库,然后删除旧数据库,但有人知道解决此问题的更好方法吗?

请尝试缩小数据库和日志文件

DBCC SHRINKFILE (log, 0)

DBCC SHRINKDATABASE (N'db1')
相应地调整数据库的最大大小:

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

之后,尝试缩小数据库。

超缩放不是一种选择吗?因为如果Cameron只是想增加存储空间,那么最终可能会消耗比P11更少的空间,对吗?@FrancescoMantovani,他只需要回收空间就可以缩小到S4。S4非常便宜