相关疑难解决方法(0)

如何快速缩小所有数据库的所有文件?

在 SQL Server(在本例中为 2008)中,如何快速缩小实例上所有数据库的所有文件,包括日志和数据?我可以通过 SSMS 并右键单击每个并选择任务 -> 收缩,但我正在寻找更快的东西。

我编写了一些“创建数据库”脚本,但忘记了它们的默认值已经膨胀,并且不需要为该项目中的这些文件保留太多空间。

sql-server-2008 sql-server shrink

50
推荐指数
4
解决办法
13万
查看次数

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

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

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
查看次数