SQL Server 之 数据库日志文件太大 之 删除

SQL数据库的日志文件太大!

用'管理'->'数据库维护计划'来做  
选择数据库->从数据库文件中删除未使用的空间  
当数据库的大小超过n  MB时收缩数据库  保留10% 的数据空间作为可用空间,这样可以调度执行,不需要手工操作。      
在维护日志备份序列时,调度BACKUPLOG语句按间隔发生,以使事务日志不致增长到超过预期的大小。    

*当不维护日志备份序列时,指定简单恢复模式。  详情请参考  MSSQLServer2000联机丛书:  目录-->  SQLServer构架-->数据库构架-->物理数据库构架-->事务日志构架-->收缩事务日志  目录-->  SQLServer构架-->数据  

1:删除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:/ProgramFiles/MicrosoftSQLServer/MSSQL/Data/pubs.mdf'

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

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

或截断日志:  
backuplog 数据库  withno_log

3:清除日志  
方法1、  
--在查询分析器,选中所要清理日志的数据库,执行如下SQL  
backuplog 数据库名  withno_log
DBCC SHRINKFILE(日志文件名或日志文件ID,要缩小的目标大小)  

在当前数据库下  
select  fileid,groupid,name from  sysfiles where  groupid=0
----------------------------------------
得到以下结果  
fileid  groupid  name
20  test_log

以上结果,fileid为日志文件ID,name为test_log  

你可以  
backup  log  test  with  no_log
dbcc  shrinkfile (2,2)
or
backup  log  test  with  no_log
dbcc  shrinkfile('test_log',2)
如果以后,不想要它变大,在数据库上点右键->属性->选项->故障恢复    模型  选择  简单模型就可以了!  
或用SQL语句  
alterdatabase数据库名  setrecoverysimple
方法2、  
SQLSERVER企业管理器-》SQL  SERVER组-》服务器-》数据库-》选中数据库实体-》右键-》所有任务-》分离数据库,  
然后到数据库所在物理路径下删除.ldf文件,再数据库右键-》所有任务-》附加数据库,即可,会重新生成日志文件。  
展开服务器组,然后展开服务器。  
展开"数据库"文件夹,右击要从中删除数据或日志文件的数据库,然后单击"属性"命令。  
若要删除数据文件,单击"常规"选项卡。若要删除日志文件,单击"事务日志"选项卡。  
在"文件名"列中,单击要删除的文件名旁边的箭头,再按  DELETE键。文件名旁出现十字光标,表明将删除此文件。    
说明    只能删除空文件。从数据库中删除文件之前,应先删除文件中的所有对象,并收缩该数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值