Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Всем Привет! Пришла база от партнеров которую мы развернули на нашем сервере (SQL2K). После всех установок обнаружили следующий факт. Размер BD - 19 Mb Размер TL - 100 Mb. (Transaction log) попытался сделать truncate BACKUP LOG tours WITH TRUNCATE_ONLY размер неизменен, попытки сделать shrink - аналогично ... Backup базы тоже не помог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 07:46 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Не был журнал изначально создан такого размера ? Если да, то никакое сжатие не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 09:54 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Вот уж не знаю, попробую у них спросить. Но если это так то что? придётся создавать новый файл а старый убивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 11:13 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 13:21 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Ну вообще то я привык к другим пропорциям .когда большая база и маленький (относительно) TL. А тут на тебе ... вот и запереживал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 13:34 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Возможен вариант, создать точную копию базы, трансфернуть все туда, удалить вражескую базу с логом.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 17:34 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/articles/mssql/01062802ShrinkingTransactionLogSQLServer2K.shtml http://www.sql.ru/articles/mssql/01070901QuicklyShrinkingTransactionLog.shtml http://www.sql.ru/articles/mssql/01070903TruncatingTransactionLog.shtml http://www.sql.ru/articles/mssql/01072301CausesOfSQLTransactionLogFillingUp.shtml http://www.sql.ru/articles/mssql/01072302TransactionLogStillFull.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 19:27 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
А есть процедура хорошая, описана в книжке Neil Pike. SQL Server: Common Problems, Tested Solutions, Apress. Procedure: sp_force_shrink_log Работает насмерть, текст могу прислать. П. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 19:44 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 20:19 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 20:29 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
А я обычно после полного backup базы и backup журнала транзакций делаю подряд несколько раз backup журнала транзакций и усечение файло базы и журнала. Причем журнал архивирую в один и тот же файл с замещением данных. (Активности на сервере в это время нет, восстанавливать будет нечего). После 2-3 раз (обязательно отсутсвие активности пользователей) журнал ужимается до 2Мб. С 10Гб. После 10 Гигабайт журнала я на 100 Мб уже не смотрю. SQL 2000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 08:20 |
|
||
|
Transaction Log (не могу сделать truncate)
|
|||
|---|---|---|---|
|
#18+
Тоже мучался с этим долго, но в конце концов все решилось просто (из 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2002, 08:49 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022190&tid=1823320]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 468ms |

| 0 / 0 |
