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键。文件名旁出现十字光标,表明将删除此文件。
说明 只能删除空文件。从数据库中删除文件之前,应先删除文件中的所有对象,并收缩该数据库