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.设置为自动收缩企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"