【解决方法】因为 '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组的自动增长设置->最大文件大小设置为无限制
具体可以参考以下操作截屏。
至此,该问题已解决。