【发布时间】:2010-06-07 07:01:40
【问题描述】:
我的数据库中有一个非常大的表,我开始收到此错误
无法为 数据库'mydatabase'因为 文件组中的磁盘空间不足 '基本的'。创造必要的空间 通过在文件组中删除对象, 将附加文件添加到 文件组,或设置自动增长 对于文件组中的现有文件。
您如何解决此错误?我不明白那里的建议。
【问题讨论】:
标签: sql sql-server
我的数据库中有一个非常大的表,我开始收到此错误
无法为 数据库'mydatabase'因为 文件组中的磁盘空间不足 '基本的'。创造必要的空间 通过在文件组中删除对象, 将附加文件添加到 文件组,或设置自动增长 对于文件组中的现有文件。
您如何解决此错误?我不明白那里的建议。
【问题讨论】:
标签: sql sql-server
如果您使用的是 SQL Express,您可能会达到最大数据库大小限制(或更准确地说是文件组大小限制),最高 2005 的版本为 4GB,SQL Express 2008 及更高版本为 10GB。该大小限制不包括日志文件。
【讨论】:
实际上并没有什么可添加的——它几乎可以在错误消息中告诉您需要做什么。
您在 SQL 中创建的每个对象(表、SP、索引等)都是在文件组上创建的。默认文件组是 PRIMARY。创建跨越多个磁盘的多个文件组是很常见的。例如,您可以有一个名为 INDEXES 的文件组来存储所有索引。或者,如果您有一个非常大的表,您可以将其移至不同的文件组。
您可以为文件组分配空间,例如 2GB。如果文件组中的数据达到 2GB 后未启用 Auto Grow,则 SQL Server 无法再创建任何对象。如果文件组所在的磁盘空间不足,也会发生这种情况。
我不确定还要添加什么 - 正如我之前所说,错误消息几乎可以告诉您需要什么。
【讨论】:
如果您使用客户端工具 (MSDE),则文件组中的数据达到 2GB,SQL Server 无法再创建任何对象。
【讨论】:
使用 DBCC shrinkfile 语句来收缩文件...
USE databasename ;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE databasename
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (databasename_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE databasename
SET RECOVERY FULL;
GO
【讨论】: