如何缩小MS SQL Server日志文件

server

方法一: 

将数据库日志文件改成简单日志模式

方法二:

DUMP TRANSACTION 你的数据库名 WITH NO_LOG
BACKUP LOG 你的数据库名 WITH NO_LOG
DBCC SHRINKDATABASE(你的数据库名)
EXEC sp_dboption '你的数据库名', 'autoshrink', 'TRUE' 
方法三:

把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)

----- 
SET NOCOUNT ON 
DECLARE @LogicalFileName sysname, 
@MaxMinutes INT, 
@NewSize INT 

USE Marias -- 要操作的数据库名 
SELECT @LogicalFileName = 'Marias_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 OFF 

时间: 2024-12-28 17:20:02

如何缩小MS SQL Server日志文件的相关文章

如何缩小SQL SERVER日志文件(1/2)

如何缩小sql server日志文件 可以将日志文件缩小到自己想要的大小了.把代码copy到查询分析器里,,然后修改其中的3个参数(数据库教程名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了) ----- set nocount on declare @logicalfilename sysname, @maxminutes int, @newsize int use marias -- 要操作的数据库名 select @logicalfilename = 'marias_lo

解决SQL Server日志文件损坏严重的问题

如果服务器出现Raid故障,在数据基本恢复成功后,发现其中的一个Sql Server日志文件(扩展名LDF)损坏严重,我们可以通过下面的操作使数据全部恢复. 首先新建一个同名的数据库,然后再停掉sql server服务,用原数据库的数据文件覆盖掉这个新建的数据库文件,重启sql server服务.打开企业管理器,该数据库显示"置疑",在查询分析器中执行下面的语句: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH

SQL Server日志文件庞大收缩方法(实测好用)

原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK='NUL' --收缩 DBCC SHRINKFILE('CloudMonitor_log')   以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长. SQL Server日志文件庞大收缩并非易事, 文章中提到: 由于首日志.尾日志和空间重复利用的原因,当备份日志后产生了日志

MS SQL Server 对文件内容进行全文检索的查询

server|全文检索   因为项目需要,需要对上传的文件内容进行查询.通过MSDN了解到Windows索引服务可以实现对文件的全文检索,并可以通过SQL Server进行查询.项目将这两者结合,实现对上传文件的全文检索的解决方案.方案概要:1.  改变文件存储时的文件名2.  配置索引服务器,并将索引服务器与MS SQL Server关联.3.  修改SQL语句,将进行全文查询语句的内容加入查询条件中 文件的存储方式:为了方便存储以及方便索引,我们将上传的文件存储到一个目录里面,为了保证上传的

教你如何缩小SQL SERVER日志文件

前几天也碰到日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G!!! 试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小.无论如何,这应该算SQL SERVER的一个BUG吧. 后来找到下面的代码,就可以将日志文件缩小到自己想要的大小了.把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了) ----- SET N

缩小SQL Server日志文件的SQL语句

server|语句 把下面的代码粘贴到SQL Query Analyzer(查询分析器)里执行即可(注意修改红色部分的3个参数): SET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INT USE Dicky  --需要缩小日志的数据库名SELECT @LogicalFileName = 'Dicky_Log',  --日志文件的逻辑名,非物理文件名@MaxMinutes = 10, -- Limit

缩小SQL SERVER日志文件

server SQL server 2000 会有日志文件由于时间的积累越来越大的问题:数据库实际大小为15M, 日志文件实际大小为625KB(导出的日志文件), 但日志文件实际占用空间为200MB(默认设置是文件日志会自动增长).如果想在数据库属性那里,直接将当前的日志文件的存储空间改小,是不行的. 解决方法: 找到下面的代码,可以将日志文件缩小到自己想要的大小了.把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可! SET NOCO

也谈如何缩小SQL SERVER日志文件

server 前几天也碰到日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G!!!试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小.无论如何,这应该算SQL SERVER的一个BUG吧. 后来找到下面的代码,就可以将日志文件缩小到自己想要的大小了.把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)-----S

sql server日志文件总结及日志满的处理办法

server     交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分.由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志. 交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中.对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态.从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录.每