手动清除日志的具体方法
一、现在我们详细描述一下如何用企业管理器清理SQL 2000的日志:
1、打开企业管理器,右击要处理的数据库--》属性--》选项--》故障还原,选“简单”--》确定。如图:
2、右击要处理的数据库--》所有任务--》收缩数据库--》什么也不动,默认第一个是0%,其它两个未选中,点确定--》如果您以前数据库日志文件大于1M那么现在再看看,是不是只有1M了呢。
3、操作完后--》按第一步,把“故障还原”,选“完全”,传说中SQL Server 2000 有自动还原功能,说是如果非法关机等因素造成数据丢失可以自动回滚,另外可以用程序来实现操作回滚,所以最好是让故障还原是“完全”。
自动设置清除日志的具体方法
打开企业管理器,进入“管理”-“sql server代理服务”-“作业”,在右侧窗口点击右键,选择“新建作业”。“常规”选项卡中,填写作业名称,具体描述,注意所有者最好还是用sa或者默认的管理帐号。
转到“步骤”选项卡,新建作业步骤,填写步骤名称,类型为脚本,数据库为需要清理日志的数据库,在下边命令中填写以下命令:
Sql代码
	  
		|  代码如下 | 
		复制代码 | 
	  
	  
		| 
 1.  
DUMP TRANSACTION 数据库名称 WITH NO_LOG  
DBCC SHRINKFILE(数据库日志文件名,1) 
或者使用 
2.  
DUMP TRANSACTION DBName WITH NO_LOG  
BACKUP LOG DBName WITH NO_LOG  
DBCC SHRINKDATABASE(DBName )  
DBCC SHRINKFILE(1) 
 | 
	  
	
通过SQL收缩日志
把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可
	  
		|  代码如下 | 
		复制代码 | 
	  
	  
		| 
 SET NOCOUNT ON 
DECLARE @LogicalFileName sysname, 
@MaxMinutes INT, 
@NewSize INT 
USE tablename -- 要操作的数据库名 
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 
@MaxMinutes = 10, -- Limit on time allowed to wrap log. 
@NewSize = 1 -- 你想设定的日志文件的大小(M) 
-- Setup / initialize 
DECLARE @OriginalSize int 
SELECT @OriginalSize = size  
FROM sysfiles 
WHERE name = @LogicalFileName 
SELECT 'Original Size of ' + db_name() + ' LOG is ' +  
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +  
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' 
FROM sysfiles 
WHERE name = @LogicalFileName 
CREATE TABLE DummyTrans 
(DummyColumn char (8000) not null) 
DECLARE @Counter INT, 
@StartTime DATETIME, 
@TruncLog VARCHAR(255) 
SELECT @StartTime = GETDATE(), 
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' 
DBCC SHRINKFILE (@LogicalFileName, @NewSize) 
EXEC (@TruncLog) 
-- Wrap the log if necessary. 
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired 
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  
AND (@OriginalSize * 8 /1024) > @NewSize  
BEGIN -- Outer loop. 
SELECT @Counter = 0 
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) 
BEGIN -- update 
INSERT DummyTrans VALUES ('Fill Log')  
DELETE DummyTrans 
SELECT @Counter = @Counter + 1 
END  
EXEC (@TruncLog)  
END  
SELECT 'Final Size of ' + db_name() + ' LOG is ' + 
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +  
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' 
FROM sysfiles  
WHERE name = @LogicalFileName 
DROP TABLE DummyTrans 
SET NOCOUNT OFF 
 |