Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Transaction Log (не могу сделать truncate) / 12 сообщений из 12, страница 1 из 1
05.02.2002, 07:46
    #32022136
Terol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Всем Привет!
Пришла база от партнеров которую мы развернули на нашем сервере (SQL2K). После всех установок обнаружили следующий факт.
Размер BD - 19 Mb
Размер TL - 100 Mb. (Transaction log)

попытался сделать truncate

BACKUP LOG tours

WITH
TRUNCATE_ONLY

размер неизменен, попытки сделать shrink - аналогично ...
Backup базы тоже не помог
...
Рейтинг: 0 / 0
05.02.2002, 09:54
    #32022171
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Не был журнал изначально создан такого размера ? Если да, то никакое сжатие не поможет
...
Рейтинг: 0 / 0
05.02.2002, 11:13
    #32022190
Terol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Вот уж не знаю, попробую у них спросить. Но если это так то что? придётся создавать новый файл а старый убивать?
...
Рейтинг: 0 / 0
05.02.2002, 13:21
    #32022211
MadDog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
2 Terol:
Какой Вы кровожадный!

В чем проблема с этим transaction log? 100Mb - разве это много?
...
Рейтинг: 0 / 0
05.02.2002, 13:34
    #32022213
Terol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Ну вообще то я привык к другим пропорциям .когда большая база и маленький (относительно) TL. А тут на тебе ... вот и запереживал.
...
Рейтинг: 0 / 0
05.02.2002, 17:34
    #32022249
Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Возможен вариант, создать точную копию базы, трансфернуть все туда, удалить вражескую базу с логом....
...
Рейтинг: 0 / 0
06.02.2002, 19:27
    #32022352
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
...
Рейтинг: 0 / 0
06.02.2002, 19:44
    #32022355
Понырев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
А есть процедура хорошая, описана в книжке Neil Pike. SQL Server: Common Problems, Tested Solutions, Apress.

Procedure: sp_force_shrink_log

Работает насмерть, текст могу прислать.

П.
...
Рейтинг: 0 / 0
06.02.2002, 20:19
    #32022357
Olga Rastokina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
moshet eto pomoshet ? y menia ona rabotaet xorosho



create proc sp_force_shrink_log

@target_percent tinyint = 0,
@max_iterations int = 1000,
@backup_log_opt nvarchar(1000) = 'with truncate_only' as set nocount on declare @db sysname, @last_row int, @log_size decimal(15,2), @unused1 decimal(15,2), @unused decimal(15,2), @shrinkable decimal(15,2), @iteration int select @db = db_name(), @iteration = 0 create table #loginfo ( id int identity, FileId int, FileSize numeric(22,0), StartOffset numeric(22,0), FSeqNo int, Status int, Parity smallint, CreateTime datetime ) -- Create a table to execute dummy transactions: if object_id( 'table_to_force_shrink_log' ) is null exec( 'create table table_to_force_shrink_log ( x nchar(3000) not null )' ) -- Put DBCC LOGINFO results in a table to analyze: insert #loginfo ( FileId, FileSize, StartOffset, FSeqNo, Status, Parity, CreateTime ) exec ( 'dbcc loginfo' ) select @last_row = @@rowcount select @log_size = sum( FileSize ) / 1048576.00, @unused = sum( case when Status = 0 then FileSize else 0 end ) / 1048576.00, @shrinkable = sum( case when id < @last_row — 1 and Status = 0 then FileSize else 0 end ) / 1048576.00 from #loginfo select @unused1 = @unused -- save for later select 'iteration' = @iteration, 'log size, MB' = @log_size, 'unused log, MB' = @unused, 'shrinkable log, MB' = @shrinkable, 'shrinkable %' = convert( decimal(6,2), @shrinkable * 100 / @log_size ) -- Keep shrinking until we reach the target percent -- or iteration limit runs out: while @shrinkable * 100 / @log_size > @target_percent and @iteration < @max_iterations begin select @iteration = @iteration + 1 -- Run dummy transactions, backup the log: exec( 'insert table_to_force_shrink_log select name from sysobjects delete table_to_force_shrink_log backup log ' + @db + ' ' + @backup_log_opt ) -- Get the log structure information: delete #loginfo insert #loginfo ( FileId, FileSize, StartOffset, FSeqNo, Status, Parity, CreateTime ) exec ( 'dbcc loginfo' ) select @last_row = @@rowcount -- Check how much is shrinkable to determine -- if the loop should continue: select @log_size = sum( FileSize ) / 1048576.00, @unused = sum( case when Status = 0 then FileSize else 0 end ) / 1048576.00, @shrinkable = sum( case when id < @last_row - 1 and Status = 0 then FileSize else 0 end ) / 1048576.00 from #loginfo select 'iteration' = @iteration, 'log size, MB' = @log_size, 'unused log, MB' = @unused, 'shrinkable log, MB' = @shrinkable, 'shrinkable %' = convert( decimal(6,2), @shrinkable * 100 / @log_size ) end select 'It took ' + convert( varchar, @iteration ) + ' iterations to shrink the unused ' + 'portion of the log from ' + convert( varchar, @unused1 ) + ' MB to ' + convert( varchar, @unused ) + ' MB' exec( 'drop table table_to_force_shrink_log' ) go
...
Рейтинг: 0 / 0
06.02.2002, 20:29
    #32022358
olga+Rastokina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
izvinite chto v takom vide , nechitabel"nom

vot zdec" lyshshe :


use master
go
if object_id( 'sp_force_shrink_log' ) is not null drop proc sp_force_shrink_log
go
create proc sp_force_shrink_log
--------------------------------------------------------------------------------
-- Purpose: Shrink transaction log of the current database in SQL Server 7.0.
--------------------------------------------------------------------------------
@target_percent tinyint = 0,
@target_size_MB int = 10,
@max_iterations int = 1000,
@backup_log_opt nvarchar(1000) = 'with truncate_only'
as
set nocount on

declare @db sysname,
@last_row int,
@log_size decimal(15,2),
@unused1 decimal(15,2),
@unused decimal(15,2),
@shrinkable decimal(15,2),
@iteration int,
@file_max int,
@file int,
@fileid varchar(5)

select @db = db_name(),
@iteration = 0

create table #loginfo (
id int identity,
FileId int,
FileSize numeric(22,0),
StartOffset numeric(22,0),
FSeqNo int,
Status int,
Parity smallint,
CreateTime datetime
)

create unique clustered index loginfo_FSeqNo on #loginfo ( FSeqNo, StartOffset )

create table #logfiles ( id int identity(1,1), fileid varchar(5) not null )
insert #logfiles ( fileid ) select convert( varchar, fileid ) from sysfiles where status & 0x40 = 0x40
select @file_max = @@rowcount

if object_id( 'table_to_force_shrink_log' ) is null
exec( 'create table table_to_force_shrink_log ( x nchar(3000) not null )' )

insert #loginfo ( FileId, FileSize, StartOffset, FSeqNo, Status, Parity, CreateTime ) exec ( 'dbcc loginfo' )
select @last_row = @@rowcount

select @log_size = sum( FileSize ) / 1048576.00,
@unused = sum( case when Status = 0 then FileSize else 0 end ) / 1048576.00,
@shrinkable = sum( case when id < @last_row - 1 and Status = 0 then FileSize else 0 end ) / 1048576.00
from #loginfo

select @unused1 = @unused -- save for later

select 'iteration' = @iteration,
'log size, MB' = @log_size,
'unused log, MB' = @unused,
'shrinkable log, MB' = @shrinkable,
'shrinkable %' = convert( decimal(6,2), @shrinkable * 100 / @log_size )

while @shrinkable * 100 / @log_size > @target_percent
and @shrinkable > @target_size_MB
and @iteration < @max_iterations begin
select @iteration = @iteration + 1 -- this is just a precaution

exec( 'insert table_to_force_shrink_log select name from sysobjects
delete table_to_force_shrink_log')

select @file = 0
while @file < @file_max begin
select @file = @file + 1
select @fileid = fileid from #logfiles where id = @file
exec( 'dbcc shrinkfile( ' + @fileid + ' )' )
end

exec( 'backup log [' + @db + '] ' + @backup_log_opt )

truncate table #loginfo
insert #loginfo ( FileId, FileSize, StartOffset, FSeqNo, Status, Parity, CreateTime ) exec ( 'dbcc loginfo' )
select @last_row = @@rowcount

select @log_size = sum( FileSize ) / 1048576.00,
@unused = sum( case when Status = 0 then FileSize else 0 end ) / 1048576.00,
@shrinkable = sum( case when id < @last_row - 1 and Status = 0 then FileSize else 0 end ) / 1048576.00
from #loginfo

select 'iteration' = @iteration,
'log size, MB' = @log_size,
'unused log, MB' = @unused,
'shrinkable log, MB' = @shrinkable,
'shrinkable %' = convert( decimal(6,2), @shrinkable * 100 / @log_size )
end

if @unused1 < @unused
select 'After ' + convert( varchar, @iteration ) +
' iterations the unused portion of the log has grown from ' +
convert( varchar, @unused1 ) + ' MB to ' +
convert( varchar, @unused ) + ' MB.'
union all
select 'Since the remaining unused portion is larger than 10 MB,' where @unused > 10
union all
select 'you may try running this procedure again with a higher number of iterations.' where @unused > 10
union all
select 'Sometimes the log would not shrink to a size smaller than several Megabytes.' where @unused <= 10

else
select 'It took ' + convert( varchar, @iteration ) +
' iterations to shrink the unused portion of the log from ' +
convert( varchar, @unused1 ) + ' MB to ' +
convert( varchar, @unused ) + ' MB'

exec( 'drop table table_to_force_shrink_log' )
go
...
Рейтинг: 0 / 0
08.02.2002, 08:20
    #32022483
Вадим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
А я обычно после полного backup базы и backup журнала транзакций делаю подряд несколько раз backup журнала транзакций и усечение файло базы и журнала. Причем журнал архивирую в один и тот же файл с замещением данных. (Активности на сервере в это время нет, восстанавливать будет нечего). После 2-3 раз (обязательно отсутсвие активности пользователей) журнал ужимается до 2Мб. С 10Гб. После 10 Гигабайт журнала я на 100 Мб уже не смотрю. SQL 2000.
...
Рейтинг: 0 / 0
29.03.2002, 08:49
    #32026467
##V3##
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Transaction Log (не могу сделать truncate)
Тоже мучался с этим долго, но в конце концов все решилось просто (из Books online):
When SQL Server finishes backing up the transaction log, it automatically truncates the inactive portion of the transaction log. This inactive portion contains completed transactions and so is no longer used during the recovery process. Conversely, the active portion of the transaction log contains transactions that are still running and have not yet completed. SQL Server reuses this truncated, inactive space in the transaction log instead of allowing the transaction log to continue to grow and use more space.
...Можно после этого вручную сделать shrink.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Transaction Log (не могу сделать truncate) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]