今天进行了一错误操作。
数据库xxzx_discuz,因生成大量日志使日志文件'xxzx_discuz_Log.LDF' 占满了磁盘所有空间,使网站无法正常使用数据库。
自己图省事分离数据库xxzx_discuz后,直接删除'xxzx_discuz_Log.LDF' (因为文件太大,无法存放到回收站),重新附件到SQL Server时出现两个提示:
------------------------------------------------------------------------------------------------------------------------------
SQL Server 企业管理器
---------------------------
为日志文件指定的文件名不正确。
将创建新的日志文件。
要继续吗?
---------------------------
是(Y)否(N)
------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL-DMO (ODBC SQLState: 42000)
---------------------------
错误 1813: 未能打开新数据库 'xxzx_discuz'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'S:Program FilesMicrosoft SQL ServerMSSQLdataxxzx_discuz_Log.LDF' 可能有误。
---------------------------
确定
------------------------------------------------------------------------------------------------------------------------------
从而无法将数据库正常附加到SQL Server 2000,正常情况下这样操作是没有问题的,SQL Server会重新生成日志文件,但是因为之前出现了磁盘空间不足,日志文件不完整,从而造成了无法正常附加。
解决办法如下(从网上找来的):
0.备份数据文件'xxzx_discuz_Log.MDF'
1.新建一个同名的数据库'xxzx_discuz';
2.再停掉sqlserver服务(注意不要分离数据库)
3.用原数据库的数据文件'xxzx_discuz_Log.MDF' 覆盖掉新建的数据库
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
- use;master ;;
- go ;;
- sp_configure;'allow;updates',1;reconfigure;withoverride ;;
- go ;;
- updatesysdatabases;setstatus;=32768;wherename='置疑的数据库名'
- go ;;
- sp_dboption;'置疑的数据库名',;'single;user',;'true'
- go ;;
- dbcc;checkdb('置疑的数据库名'); ;;
- go ;;
- updatesysdatabases;setstatus;=28;wherename='置疑的数据库名'
- go ;;
- sp_configure;'allow;updates',;0;reconfigure;withoverride ;;
- go; ;;
- sp_dboption;'置疑的数据库名',;'single;user',;'false'
- go;;