清楚数据库日志的点子

转载自http://www.jb51.net/article/30811.htm  谢谢!

 

方法一: ① 、打开查询分析器,输入指令
BACKUP LOG database_name WITH NO_LOG
二 、再打开集团管理器–右键要削减的数据库–全数任务–减弱数据库–裁减文件–选拔日志文件–在减弱格局里挑选减少至xxm,那里会付给一个同意收缩到的细微m数,直接输入那些数,鲜明就足以了。

方法二: 设置检查点,自动截断日志

  一般景色下,SQL数据库的收缩并无法很大程度上减小数据库大小,其主要性功效是减少日志大小,应当定期举行此操作避防数据库日志过大
壹 、设置数据库情势为不难情势:打开SQL企业管理器,在决定台根目录中依次点开Microsoft
SQL Server–>SQL
Server组–>双击打开你的服务器–>双击打开数据库目录–>选拔你的数据库名称(如用户数据库cwbase1)–>然后点击右键采取属性–>选拔选项–>在故障还原的方式中精选“简单”,然后按鲜明保存
② 、在时下数据库上点右键,看有着职分中的裁减数据库,一般里面的暗中认同设置不用调整,间接点鲜明
三 、裁减数据库完结后,提出将您的数据库属性重新安装为专业格局,操作方法同第壹点,因为日志在一些至极景况下再三是回复数据库的紧要依据

措施三:通过SQL减少日志

把代码复制到查询分析器里,然后修改其中的二个参数(数据库名,日志文件名,和对象日志文件的大大小小),运营即可

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

方法四:删除日志文件。

此格局有自然的危机性,因为sql
server的日志文件不是即时写入数据库主文件的,如处理不当,会招致数据的损失。1、操作前请断开全体数据库连接。
贰 、分离数据库
暌违数据库:集团管理器->服务器->数据库->cwbase1->右键->分离数据库
分离后,cwbase1数据库被去除,但保留了数据文件和日志文件
③ 、删除log物理文件
去除LOG物理文件,然后附加数据库:
集团管理器->服务器->数据库->右键->附加数据库
此法生成新的log,大小唯有500多k。

在意:提议拔取第3种格局。操作前请确保全部操作员都已经生产系统,断开数据库的接连。

以上操作前,请务必做好数据备份!

1.sql server 2007 清除日志语句
dump transaction 数据库名称 with no_log
backup log 数据库名称 with no_log
dbcc shrinkdatabase(数据库名称)

2.sql server 二〇〇九 清除日志语句

sp_dboption 数据库名称, “trunc. log on chkpt.”, true
checkpoint
sp_dboption 数据库名称, “autoshrink”, true

扫除SQLSE途乐VE福睿斯数据库日志文件的法门:
① 、先将以此数据库卸载:
EXEC sp_detach_db ‘database_name’, ‘true’
接下来将该数据库所对应的Log文件删掉;
最后,再将这些数据库注册到系统里面:

EXEC sp_attach_db @dbname = N’database_name’,
@filename1 = N’e:\mssql7\data\database_name_data.mdf’

贰 、数据库上点右键-全体职分-减弱数据库-选拔收缩文件为LOG 。

三 、清除SQLSEQX56VE奥迪Q3数据库日志的艺术:

*******下边是转账的邮件*****

The shrinking of log files is not immediate in SQL Server 7.0. The
shrinking of log files does not occur until the active portion of the
log moves. As updates are performed on the database, the shrink
operation occurs at checkpoints or transaction log backups. Each log
file is marked with the target_percent for the shrink operation. Each
subsequent log backup or log truncation attempts to shrink the file to
bring its size as close to the target_percent as possible. Because a
log
file can be shrunk only to a virtual log file boundary, it may not be
possible to shrink a log file to a size smaller than the size of a
virtual log file even if it is not being used. Please refer to SQL
Book
Online for the details.

RESOLUTION

Below script will help to shrink the log file immediately, pls keep it
running for 3~4 minutes and then stop it manually.

\* Run “select fileid, name,filename from ..sysfiles” to get
the fileid which you want to shrink *\

use
go
dbcc shrinkfile(fileid,notruncate)
dbcc shrinkfile(fileid,truncateonly)
create table t1 (char1 char(4000))
go
declare @i int
select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values (‘a’) select @i = @i +1
end
truncate table t1
backup log with truncate_only
end
go

*****转车内容截止*****

SQLServer数据库日志清理 清除sqlserver200一日志
有时当系统运作时刻比较长的时候,大家把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,尤其是日记文件。将来给大家介绍怎样清理SQLServer数据库日志;有二种办法如下:

艺术一:手动清除sqlserver2005日志

1.右键在拔除日志的数据库,如“TestDB”,点击[新建查询(Q)]
2.输入以下SQL语句,其中“TestDB”是数据库名称
DUMP TRANSACTION TestDB WITH NO_LOG
3.推行该SQL,成功后持续以下操作
4.右键该数据库节点,点击[任务(T)] -> [收缩(S)] ->
[文件(F)]
5.在弹出的“减弱文件”对话框中,将“文件类型(T)”选为“日志”,将“减少操作”选中“在出狱未使用的空间前再一次社团页(O)”
6.在“将文件收缩到(K)”文本框中输入前面提示的蝇头大小的数值,点击[确定]即可。

方式二:用工具软件SqlServer日志清除专家3.0,可对Sql Server 6.5到Sql
Server 2007的各类版本的数据库日志的破除;其应用办法格外不难;SqlServer
日志清除专家蛋黄版 V3.5下载地址:

下载地址 http://www.jb51.net/softs/21840.html

主意一操作起来相对劳累一些,但是可以定制日志的大大小小,清理日志后其相应的数据库数据文件在也会变小,数据也不会丢掉;方法二操作相比便利,可以把数据库中的日志文件清理到1M轻重; 

相关文章