亮数据库日志的艺术

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

 

方法一: 1、打开查询分析器,输入指令
BACKUP LOG database_name WITH NO_LOG
2、再打开店管理器–右键要抽的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在抽方式里甄选收缩至xxm,这里会见吃来一个允许收缩到之最好小m数,直接输入这个数,确定就足以了。

方法二: 安装检查点,自动截断日志

  一般情形下,SQL数据库的抽并无能够挺可怜程度及弱化多少数据库大小,其根本意图是抽日志大小,应当定期进行这个操作以免数据库日志过那个
1、设置数据库模式为简易模式:打开SQL企业管理器,在支配台根目录中依次点开Microsoft
SQL Server–>SQL
Server组–>双击打开你的服务器–>双击打开数据库目录–>选择你的数据库名称(如用户数据库cwbase1)–>然后点击右键选择属性–>选择选项–>在故障还原的模式面临选择“简单”,然后按照确定保存
2、在当前数据库及接触右键,看有着任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议用公的数据库属性重新安装也标准模式,操作方法同第一点,因为日志在有些异常情况下勤是回复数据库的重要依据

艺术三:通过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

法四:删除日志文件。

其一道有得的风险性,因为sql
server的日记文件不是就是经常写副数据库主文件的,如处理不当,会导致数据的损失。1、操作前要断开所有数据库连接。
2、分离数据库
分别数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库
暌违后,cwbase1数据库让删除,但保留了数据文件和日志文件
3、删除log物理文件
去LOG物理文件,然后附加数据库:
企业管理器->服务器->数据库->右键->附加数据库
此法生成新的log,大小就发生500差不多k。

专注:建议采取第一种方式。操作前请确保有操作员都早就生产系统,断开数据库的连年。

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

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

2.sql server 2008 清除日志语句

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

免除SQLSERVER数据库日志文件之方式:
1、先以这个数据库卸载:
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’

2、数据库及触右键-所有任务-收缩数据库-选择收缩文件为LOG 。

3、清除SQLSERVER数据库日志的艺术:

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

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数据库日志清理 清除sqlserver2005日志
偶尔当系统运作时刻较丰富之时节,我们将备份的数据库还原的时刻发现,数据库中数据文件和日志文件变的好酷,特别是日记文件。现在于大家介绍如何清理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 2005底各种版本的数据库日志的清除;其行使办法非常简单;SqlServer
日志清除专家绿色版 V3.5产充斥地址:

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

办法一操作起来相对辛苦一些,可是可以定制日志的高低,清理日志后其对应的数据库数据文件在也会换多少,数据为不见面丢掉;方法二操作比较便于,可以管数据库被的日记文件清理及1M大大小小; 

相关文章