SQLserver:数据库异常解决方案

1.如何截断sqlserver巨大的日志文件 

对于数据库用的时间长了,就会产生大量的日志文件,清理日志文件的方法,步骤如下:

--选择需要使用的数据库:  USE DATABASENAME;GO 

--将数据库设置为SIMPLE 独占模式:ALTER DATABASE DATABASENAMESET RECOVERY SIMPLE;GO 

--将日志文件收缩到1M: DBCC SHRINKFILE (DATABASENAME_Log, 1);GO 

--还原数据库到正常模式: ALTER DATABASE DATABASENAMESET RECOVERY FULL;GO


2.数据库状态为 “可疑” 的解决方法 方法/步骤

    --MyDB为修复的数据名
    USE MASTER
    GO
    SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
    GO
    ALTER DATABASEMyDBSET EMERGENCY
    GO
    sp_dboption 'MyDB', 'single user', 'true'
    GO
    DBCC CHECKDB('MyDB','REPAIR_ALLOW_DATA_LOSS')
    GO
    ALTER DATABASEMyDBSET ONLINE
    GO
    sp_configure 'allow updates', 0 reconfigure with override
    GO
    sp_dboption 'MyDB', 'single user', 'false'
    GO

 

3.执行select查询语句,警告显示:“LOB数据类型节点的数据库ID 30,页(1:438),槽7不存在。

这通常是由于可以读取数据页上未提交的数据的事务所致。请运行DBCC CHECKTABLE”,方法/步骤:

use master
declare @databasename varchar(255)
set @databasename='需要修复的数据库实体的名称'
exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态