【解决方法】因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间

 

平台

  • sqlserver 2012

问题描述

正常运行的生产系统,今天下午突然发现不能使用的情况。看日志,发现以下描述:

System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. —> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. —> System.Data.SqlClient.SqlException: 无法为数据库 ‘bidagen2’ 中的对象 ‘dbo.OperationLog’.‘PK_dbo.OperationLog’ 分配空间,因为 ‘PRIMARY’ 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

定位问题,自增的主键,没有存储空间了。

解决问题

1、查看数据库数据文件存放路径

use master--你的数据库名称
go

--看看你的primary组里的文件

select ds.name,
       df.physical_name,  --主文件组的物理文件的路径
                          --打开我的电脑,查看文件所在盘,是否磁盘已满
                          
       df.is_percent_growth, --是否自动增长
       df.growth             --增长多少
from sys.data_spaces ds
inner join sys.database_files df
        on ds.data_space_id = df.data_space_id
where ds.name = 'primary'

运行以上代码会出现类似以下的结果:
在这里插入图片描述

2、查看存放路径的盘是否已满

针对我的情况,C盘还有很多的空间,所以应该是数据库设置的问题。

如果已经满了,那就需要清除一些文件了。

3、更改数据库设置

a、使用 MSSqlserver Management Studio 连接数据库

b、在需要更改的数据库上点击右键,选择属性

c、依次选择文件->Primary组的自动增长设置->最大文件大小设置为无限制

具体可以参考以下操作截屏。

在这里插入图片描述
在这里插入图片描述
至此,该问题已解决。

posted @ 2020-09-12 16:56  自由的鱼  阅读(3900)  评论(0编辑  收藏  举报