1、ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE --简单模式
2、数据库--任务--收缩--选择日志文件
3、ALTER DATABASE 数据库名称 SET RECOVERY FULL --还原为完全模式
转:
压缩(清除)数据库日记文件:
SQL2008清空删除日志:
一、查看日志信息
DBCC loginfo('MyDBName');
status=0的日志,代表已经备份到磁盘的日志文件。
status=2的日志,代表还没有备份。
当收缩日志文件时,收缩掉的空间其实就是 status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。
二、清除status=2的记录
sp_removedbreplication 'MyDBName';
三、对数据库日志文件进行收缩
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE [master]
Go
ALTER DATABASE MyDBName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE MyDBName SET RECOVERY SIMPLE --简单模式
GO
USE MyDBName
GO
DBCC SHRINKFILE(N'MyDBName_log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE MyDBName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE MyDBName SET RECOVERY FULL --还原为完全模式
GO
说明:
1、如果执行上面语句时报“在 sys.database_files 中找不到数据库 'master' 的文件 'MyDBName_log'。该文件不存在或者已被删除。”的错误,原因是数据库的逻辑文件名和物理文件名不一致所造成的。
2、查询数据库逻辑文件名
SELECT file_id,name from sys.master_files WHERE database_id=db_id('wac_mall');
SELECT file_id, name FROM sys.database_files;
如果数据库通过备份文件还原并重新命名后,数据库的逻辑文件名和数据库名(物理文件名)不一致。
修改数据库逻辑文件名:
alter database MyDBName modify file(name=MyDBName_old, newname=MyDBName);
alter database MyDBName modify file(name=MyDBName_old_log, newname=MyDBName_log);
四、查询数据库服务器各数据库日志文件的大小及利用率
DBCC SQLPERF(LOGSPACE);
五、查询当前数据库的磁盘使用情况
Exec MyDBName.dbo.sp_spaceused;
六、查询数据库的数据文件及日志文件的相关信息
select * from MyDBName.[dbo].[sysfiles];
七、查询各个物理磁盘分区的剩余空间
Exec master.dbo.xp_fixeddrives;
SQL SERVER2005清空删除日志:
Backup Log MyDBName with no_log
go
dump transaction MyDBName with no_log
go
USE MyDBName
DBCC SHRINKFILE (2)
go
SQL SERVER2000压缩日志:
DUMP TRANSACTION MyDBName WITH NO_LOG
BACKUP LOG MyDBName WITH NO_LOG
DBCC SHRINKDATABASE(MyDBName)