Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с логом
|
|||
|---|---|---|---|
|
#18+
Скажите как обрезать transaction_log файл в базе? Если можно с примером. А то что-то я немогу по хелпу разобраться что и к чему Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 19:31 |
|
||
|
Помогите с логом
|
|||
|---|---|---|---|
|
#18+
Думаю, что SQL-гуру устали отвечать на этот вечный вопрос. Скорее всего никто не откликнется. Посмотрите форум чуть-чуть взад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 05:30 |
|
||
|
Помогите с логом
|
|||
|---|---|---|---|
|
#18+
\nCREATE proc sp_ForceShrinkLog @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 numeric(22,0), Status numeric(22,0), Parity numeric(22,0), CreateTime numeric(22,0) ) 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' ) Просто выполните эту проце дуру и будет Вам счастье! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 07:22 |
|
||
|
Помогите с логом
|
|||
|---|---|---|---|
|
#18+
я делаю так backup log [bd] with truncate_only dbcc shrinkfile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 10:41 |
|
||
|
Помогите с логом
|
|||
|---|---|---|---|
|
#18+
Я уже не помню, кто посоветовал, но я поступаю так: 1. Остановить сервер 2. УДАЛИТЬ файл MyBase_log.LDF 3. Запустить сервер При запуске сервера файл лога будет создан заново размером в 10% от размера собственно базы - это файл MyBase_Data.MDF (если ты не менял настройки для этой базы данных). Да, это работает в SQL7 и я не уверен, что что-то при этом не теряется. Я еще не очень хорошо понимаю, что вообще в этот лог-файл записывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 11:43 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3481&tid=1822962]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 282ms |
| total: | 433ms |

| 0 / 0 |
