mssql2005 数据库无效文件ID 0,无法打开文件控制区(FCB)

前阵子服务器经常挂,事件查看提示由MSSQL2005 对于数据库 'yy' 中无效的文件 ID 0,无法打开文件控制区(FCB)。请验证文件位置。执行 DBCC CHECKDB。

于是按照常规处理流程先跑一遍dbcc checkdb:

use mydb 
go

DBCC CHECKDB  ---检查数据库错误

Use master
go

exec sp_dboption 'mydb', 'single user', 'true' --启用单用户
go

use mydb 
go

dbcc checktable('mytable',repair_allow_data_loss) --修复表
go

Use master
go

exec sp_dboption 'mydb', 'single user', 'false' --启用多用户
go

提示检查结果出错为0. 过了几天服务器又崩溃了,于是采取了个折中的办法,通过数据导入导出到另外一份,进行访问,过不了多久情况依旧如此,事件查看器中提示“无效的文件 ID 0”警报不断。


于是采取对原数据库进行收缩处理,然后切换到它上面进行访问,情况还是如此。


于是逐个表检查,感觉都没问题,于是对视图表那块进行检查,发现有个视图表关联的数据比较大,引用比较多,于是想做视图索引考虑。但我这个视图表是没有唯一键的,于是打算删除了重建,结果发现悲催了,删除容易,却重建不起来,一直提示保存失败。


于是又从备用库了通过导入导出的方式完成恢复。


我想我大概找到问题所在了。既然问题可能出在这里,如果我不用视图访问,而是物化视图,让视图里的数据直接保存到数据表里直接进行访问查询处理。


静测后期效果中。

2019/4/13 9:45:00 技术杂谈