sqlserver7日志常用方法无法收收日志,高手请进
我用管理器先备份数据库及其日志在收缩没有用
日志640M使用26M
dump transaction test_db with no_log
dbcc shrinkfile(test_db_dev_log,1)
backup log test_db with no_log
dbcc shrinkfile(test_db_dev_log, 1)
这几中方法都没效果,我用server2000的管理器去收收缩也没用,但是我把该数据库导入到server2000中用其中任何一种方法都可以搞定。 我试着删除该数据库在还原数据库但还原数据库的大小一样日志还是那么大
高手请指教?????
问题点数:100、回复次数:10Top
1 楼pengdali()回复于 2003-11-04 14:51:00 得分 40
清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
手工做呢?
Top
2 楼pengdali()回复于 2003-11-04 14:51:29 得分 0
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE WebRoot -- 要操作的数据库名
SELECT @LogicalFileName = 'WebRoot_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 100 -- 你想设定的日志文件的大小(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 OFFTop
3 楼pengdali()回复于 2003-11-04 14:55:48 得分 0
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE WebRoot -- 要操作的数据库名
SELECT @LogicalFileName = 'WebRoot_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 100 -- 你想设定的日志文件的大小(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 OFFTop
4 楼sdhdy(大江东去...)回复于 2003-11-04 15:01:43 得分 0
SQL SERVER企业管理器-》右键数据库-》所有任务-》截断数据库日志,按操作进行即可!Top
5 楼yqh_sea(海阔天空)回复于 2003-11-04 15:29:16 得分 0
to:pengdali(大力 V3.0)在server7的管理器中没有指定大小,我用命令指定也不行。我在其他机器上用server2000的管理器按此操作无效。Top
6 楼lga(lga)回复于 2003-11-04 16:35:53 得分 30
1、清空日志
2、建一作业,定时备份日志
即可Top
7 楼lga(lga)回复于 2003-11-04 16:36:53 得分 0
对了,还需将数据库设为“自动收缩”。Top
8 楼pengdali()回复于 2003-11-04 17:04:02 得分 0
好久没有用过7.0
try:
企业管理器-->你的数据库-->属性-->数据文件-->修改Top
9 楼tjan(安安(DBA招募中。。。))回复于 2003-11-04 17:31:04 得分 30
有时候,收缩日志并不能马上看到收缩的结果,是因为 VLF 里面还有尚未完成的事务,如果想尽快的看到收缩的结果,可以适当的调整你的日志文件的增长方式。Top
10 楼yqh_sea(海阔天空)回复于 2003-11-14 13:45:35 得分 0
问题还是没有解决,谢谢各位Top




