小编the*_*nom的帖子

重建数据库失败,但数据库大小增加了一倍

我尝试使用查询重建数据库的所有索引,

USE [DB_Name];
GO
DECLARE @TableName VARCHAR(255)
DECLARE @sql NVARCHAR(500)
DECLARE TableCursor CURSOR FOR
SELECT '['+OBJECT_SCHEMA_NAME([object_id])+']'+'.'+name AS TableName
FROM sys.tables
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD'
PRINT @sql
EXEC (@sql)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO
Run Code Online (Sandbox Code Playgroud)

该查询执行了大约 3.5 小时,然后抛出错误消息,指出磁盘空间不足,这不是真的,但可能是数据库达到了其大小限制。

但唯一的问题是数据库的大小实际上增长了几乎 100%,而没有重建任何索引。我选择重建的主要原因是大多数索引碎片超过75%。

现在,不幸的是,从备份恢复不是一个选择,因为我们已经写入了新数据,而且已经过去了几个小时。

再次使用足够的磁盘空间进行重建可以解决问题吗?如果是这样,我是否仍然遵循当前数据库空间 1.5 倍的经验法则?

sql-server maintenance size restore index-rebuild

5
推荐指数
1
解决办法
662
查看次数

标签 统计

index-rebuild ×1

maintenance ×1

restore ×1

size ×1

sql-server ×1