日期:2014-05-17  浏览次数:20434 次

关于sql server 2008的日志产生
create table [TBL_LogSizeTest]
(
id int not NULL,
sex binary(1) not NULL,
name char(32) not null,
addr char(256) not null
)

把模式设置为完整,做一次数据库收缩,好了,日志文件只有1MB大小了。分别执行以下语句,差别在于使用了显式事务语句。
------------------------第一个---------------------------------------------

declare @i int
declare @begintime TIME
declare @endtime TIME
set nocount on
truncate table [TBL_LogSizeTest]
set @begintime = GETDATE()
set @i = 1
while @i<=100000
BEGIN
insert into [TBL_LogSizeTest]([id],[sex],[name],[addr]) values(@i,@i % 2,'0123456789acdef0123456789acdef','abcdefghijklmnopqrstuvwxyz')
set @i = @i + 1
end
set @endtime = GETDATE()
select 100000 ' 插入10万条记录 ',@begintime 'begin',@endtime 'end',DATEDIFF("MICROSECOND", @begintime, @endtime) 'used time'

------------------------第二个---------------------------------------------
declare @i int
declare @begintime TIME
declare @endtime TIME
set nocount on
truncate table [TBL_LogSizeTest]
set @begintime = GETDATE()
begin transaction
set @i = 1
while @i<=100000
BEGIN
insert into [TBL_LogSizeTest]([id],[sex],[name],[addr]) values(@i,@i % 2,'0123456789acdef0123456789acdef','abcdefghijklmnopqrstuvwxyz')
set @i = @i + 1
end
commit
set @endtime = GETDATE()
select 100000 ' 插入10万条记录 ',@begintime 'begin',@endtime 'end',DATEDIFF("MICROSECOND", @begintime, @endtime) 'used time'


第一个执行完毕,日志大小还是1MB,那可是十万次插入啊。第二个执行完毕,日志大小71MB,不懂,求解释。两个都是在navicat上面开一个查询窗口跑的。
日志 sql?server?2008 数据库 事务

------解决方案--------------------
你的库有没有做过最少一次完整备份?