Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Azure SQL数据库大小失控DBCC SHRINKDATABASE不';行不通_Sql Server_Azure_Azure Sql Database - Fatal编程技术网

Sql server Azure SQL数据库大小失控DBCC SHRINKDATABASE不';行不通

Sql server Azure SQL数据库大小失控DBCC SHRINKDATABASE不';行不通,sql-server,azure,azure-sql-database,Sql Server,Azure,Azure Sql Database,门户中的Azure SQL数据库大小为164GB。有许多二进制大对象通过数据库,这些记录正在被删除,但空间没有得到回收。DBCC SHRINKDATABASE没有帮助,它报告的已用页面数比sys.dm\u db\u partition\u stats中的已用页面数总和多得多 DBCC SHRINKDATABASE results DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages 5

门户中的Azure SQL数据库大小为164GB。有许多二进制大对象通过数据库,这些记录正在被删除,但空间没有得到回收。DBCC SHRINKDATABASE没有帮助,它报告的已用页面数比sys.dm\u db\u partition\u stats中的已用页面数总和多得多

DBCC SHRINKDATABASE results

DbId    FileId    CurrentSize    MinimumSize    UsedPages    EstimatedPages

5        1        19877520       2048           19877208     19877208

5        2        17024          128            17024        128
sys.dm_db_partition_统计结果中已使用的_page_计数之和:8292675

这代表了11584533页的差异,即约90GB的差异,该差异实际上未被使用,无法使用DBCC SHRINKDATABASE回收。在过去的几周里,数据库报告大小和实际使用的页面计数大小之间的差异一直在快速增长,数据库很快将达到250GB的大小限制。如何解决此问题?非常感谢您的帮助,谢谢

更新:根据微软的支持,4月份在其SQL数据库服务器上的部署打破了自动重影记录清理。几周前,有人能够为我们的服务器手动重新打开它,数据库大小稳定在174GB,但没有回收ghost记录占用的其他空间。Microsoft支持部门建议扩展到高级层,以最大限度地减少以下I/O密集型过程的影响:

declare @db_id int = db_id()
exec ('dbcc forceghostcleanup ('+ @db_id + ', 'visit_all_pages'')')
我放大到P15,假设周转更快,停机时间更短。运行命令的结果:

Msg 40518, Level 16, State 1, Line 1
DBCC command 'forceghostcleanup' is not supported in this version of SQL Server.

无法运行该命令,我试图缩小到S3。scale操作运行了24小时,在活动日志中报告它已成功,但数据库仍为P15。下一个建议是分阶段缩小规模。我试图缩小到P6。scale操作运行了24小时,在活动日志中报告它已成功,但数据库仍为P15。现在,微软支持部门又回到了产品支持部门,我正在等待回复。我希望这里面有退款。

整理一些索引很可能会有帮助

您可以使用以下查询来获取已用页面数和保留页面数之间差异最大的索引:

select 
    table_name = object_schema_name(i.[object_id]) + '.' + object_name(i.[object_id]), 
    index_name = i.[name], partition_number, reserved_page_count, used_page_count
from 
    sys.dm_db_partition_stats ps
    inner join sys.indexes i
    on ps.[object_id] = i.[object_id] and ps.index_id = i.index_id
order by reserved_page_count - used_page_count desc
从列表顶部逐个重建索引,直到

请注意,如果整个数据库的空间不足或索引特别大,则重建可能会失败或需要很长时间。在这种情况下,你应该重新组织

有关索引碎片整理的详细信息:

我添加的更新解释了这个问题是一个鬼记录问题,微软有望解决这个问题