1、打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG
2、打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至: ,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
3、在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
4、企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" 
 

 

=====================

1:由小的事务引起日志溢出,系统能正常启动。 

解决办法: 

扩大数据库日志空间: 
alter database 数据库名 on 设备名=数量(M为单位) 

sp_logdevice 数据库名,设备名 

清除日志 
dump transaction 数据库名 with no_log(no_truncate) 

2:由大的事物引起日志溢出,系统较长时间内无法正常启动或数据库无法恢复 

解决办法: 

强行清空日志。 
在实在无法恢复数据库或有近期备份的情况下,可采用强行清空日志的方法。采取这种方法的后果有可能彻底破坏数据库。执行步骤如下: 

Ⅰ 以-v 方式启动SQL SERVER(不检测日志) 

Ⅱ 修改数据库状态为-32768(阻塞状态) 

update sysdatabases set status=-32768 where name=数据库名 

Ⅲ 授权sybase_ts_role权限(sybase_ts_role为SQL SERVER特殊管理员权限,在日常的数据库管理中,不需要这个角色) 

sp_role “grant”,”sybase_ts_role”,sa 

set role “sybase_ts_role” 

Ⅳ 清除日志 

dbcc rebuild_log(数据库名,1,1) 

完成以上步骤后,重新启动SQL SERVER即可。如果数据库能正常启动,数据库就恢复完成;如果无法启动,只能重新创建数据库。

=================================================================

压缩日志 

1:截断事务日志: 
BACKUP LOG 数据库名 WITH NO_LOG 

2:清空日志 
DUMP TRANSACTION 库名 WITH NO_LOG 

再: 
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 


3: 删除LOG 
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库 
2:删除LOG文件 
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库 
此法生成新的LOG,大小只有500多K 
再将此数据库设置自动收缩 
或用代码: 
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 

EXEC sp_detach_db @dbname = 'pubs' 
EXEC sp_attach_single_file_db @dbname = 'pubs', 
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 


4: 如果想以后不让它增长 
企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小) 

--SQL语句的设置方式: 
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20) 

5.设置为自动收缩 

企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" 

posted on 2012-04-17 10:29  凌度  阅读(360)  评论(0编辑  收藏  举报