Это интересно

  • ОКД
  • ЗКС
  • ИПО
  • КНПВ
  • Мондиоринг
  • Большой ринг
  • Французский ринг
  • Аджилити
  • Фризби

Опрос

Какой уровень дрессировки необходим Вашей собаке?
 

Полезные ссылки

РКФ

 

Все о дрессировке собак


Стрижка собак в Коломне

Поиск по сайту

Журнал транзакций для базы данных заполнен. Чтобы узнать, почему пространство в журнале нельзя использовать повторно, см. Столбец log_reuse_wait_desc в sys.databases. Журнал транзакций для базы данных заполнен


sql - Журнал транзакций для базы данных заполнен

У меня есть длительный процесс, который содержит транзакцию на полную длительность.

У меня нет контроля над тем, как это выполняется.

Поскольку транзакция остается открытой в течение всего времени, когда журнал транзакций заполняется, SQL Server не может увеличить размер файла журнала.

Таким образом, процесс выходит из строя с ошибкой "The transaction log for database 'xxx' is full".

Я попытался предотвратить это, увеличив размер файла журнала транзакций в свойствах базы данных, но получаю ту же ошибку.

Не уверен, что я должен попробовать дальше. Процесс работает в течение нескольких часов, поэтому нелегко играть в пробную версию и ошибки.

Любые идеи?

Если кому-то интересно, процесс представляет собой импорт организации в Microsoft Dynamics CRM 4.0.

Существует много места на диске, у нас есть журнал в режиме простого ведения журнала и резервное копирование журнала до начала процесса.

- = - = - = - = - UPDATE - = - = - = - = -

Спасибо всем за комментарии. Следующее - это привело меня к мысли, что журнал не будет расти из-за открытой транзакции:

Я получаю следующую ошибку...

Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception: System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Итак, следуя этим советам, я пошел в "log_reuse_wait_desc column in sys.databases", и он держал значение "ACTIVE_TRANSACTION".

Согласно Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx

Это означает следующее:

Операция активна (все модели восстановления). • Долгосрочная транзакция может существовать в начале резервного копирования журнала. В этом случае для освобождения пространства может потребоваться другая резервная копия журнала. Дополнительные сведения см. В разделе "Длительные активные транзакции" далее в этом разделе.

• Отложенная транзакция (только для SQL Server 2005 Enterprise Edition и более поздних версий). Отложенная транзакция - это фактически активная транзакция, откат которой заблокирован из-за некоторого недоступного ресурса. Для получения информации о причинах отложенных транзакций и способах их перемещения из состояния отложенного платежа см. Раздел Отложенные транзакции.

Я что-то не понял?

- = - = - = - ОБНОВЛЕНИЕ 2 - = - = - = -

Только что начался процесс с первоначальным размером файла журнала, установленным в 30 ГБ. Это займет пару часов.

- = - = - = - Final UPDATE - = - = - = -

Проблема была вызвана тем, что файл журнала потребляет все доступное дисковое пространство. В последней попытке я освободил 120 ГБ, и он все еще использовал все это и в итоге потерпел неудачу.

Я не понимал, что это происходит раньше, потому что, когда процесс запускался всю ночь, он возвращался к отказу. На этот раз мне удалось проверить размер файла журнала перед откатом.

Спасибо всем за ваш вклад.

qaru.site

sql-server - Журнал транзакций для базы данных "databasename" заполнен.

Наиболее вероятным ответом является выполнение резервных копий журнала или существует открытая транзакция.

Вот еще немного, чтобы помочь вам...

Запустите этот script на своем сервере:

-- last FULL backup ;with FULLBUs as ( select d.name, max(b.backup_finish_date) as 'Last FULL Backup' from sys.databases d join msdb.dbo.backupset b on d.name = b.database_name where b.type = 'D' group by d.name ), -- last LOG backup for FULL and BULK_LOGGED databases LOGBUs as ( select d.name, max(b.backup_finish_date) as 'Last LOG Backup' from sys.databases d join msdb.dbo.backupset b on d.name = b.database_name where d.recovery_model_desc <> 'SIMPLE' and b.type = 'L' group by d.name ) -- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup] from sys.databases d left outer join FULLBUs f on d.name = f.name left outer join LOGBUs l on d.name = l.name where d.name not in ('model', 'TempDB') order by d.name

В этом запросе вы найдете общий обзор своих баз данных, какую модель восстановления они используют, почему журнал заполнен, и когда были выполнены ваши последние резервные копии FULL и LOG.

Посмотрите на столбец с надписью log_reuse_wait_description. Скорее всего, он говорит BACKUP. Следующая наиболее вероятная причина - TRANSACTION.

Если это BACKUP, вот некоторая информация:

В основном, для ваших простых баз данных каждый день запускайте ПОЛНУЮ резервную копию. Для ваших FULL баз данных каждый день выполняйте полную резервную копию и резервную копию журнала. Отрегулируйте частоту ваших баз данных LOG, чтобы они соответствовали вашей способности потерять данные, сохраняя при этом вашу работу.

Самый простой способ управления резервными копиями - использовать скрипты обслуживания Ola Hallengren. Посетите его веб-сайт и попробуйте использовать их.

Если вы видите TRANSACTION, попробуйте запустить:

dbcc opentran

И отследите, кто имеет открытые транзакции.

qaru.site

sql-server - Журнал транзакций для базы данных заполнен. Чтобы узнать, почему пространство в журнале нельзя использовать повторно, см. Столбец log_reuse_wait_desc в sys.databases

Как сказал Дэмиен, вы должны выяснить причину, почему ваш журнал растет. Отметьте эту должность для объяснения: Повторное использование журнала транзакций Подождите

Удаление многих записей потребует значительного пространства журналов, поэтому, если вы не можете сделать больше места для файла журнала, вам, возможно, придется удалить эти строки несколькими меньшими шагами. Если вы используете "полное" восстановление, вам нужно будет сделать резервную копию журнала после каждого шага.

С одной стороны, BACKUP LOG... WITH TRUNCATE_ONLY - это вообще очень плохая идея. Если вы находитесь в режиме полного восстановления, это приведет к поломке цепочки резервных копий и не позволит вам выполнить восстановление в определенный момент времени. Если вам не нужна восстанавливаемость по времени, используйте вместо этого параметр восстановления "простой". В противном случае возьмите резервную копию журнала и сохраните его вместе с другими файлами резервных копий.

DBCC SHRINKFILE в файле журнала никоим образом не помогает для базы данных, которую вы сокращаете. Вы можете использовать его, чтобы освободить место для других БД на диске, но он не освободит место для текущей базы данных, поскольку он может удалить только пространство, которое можно использовать повторно. Это означает, что любое пространство, освобожденное им, могло быть использовано для вашей транзакции в любом случае.

источник поделиться

qaru.site

sql - Журнал транзакций для базы данных заполнен sql-server sql-server-2008

У меня есть длительный процесс, который открывает транзакцию на полную длительность.

У меня нет контроля над тем, как это выполняется.

Поскольку транзакция хранится открытым в течение полной продолжительности, когда журнал транзакций заполняется, SQL Server не может увеличить размер файла журнала.

Таким образом, процесс выходит из строя с ошибкой "The transaction log for database 'xxx' is full" .

Я попытался предотвратить это, увеличив размер файла журнала транзакций в свойствах базы данных, но получаю ту же ошибку.

Не уверен, что я должен попробовать дальше. Процесс работает в течение нескольких часов, поэтому играть в пробную версию и ошибки непросто.

Есть идеи?

Если кому-то интересно, процесс представляет собой импорт организации в Microsoft Dynamics CRM 4.0.

Существует много дискового пространства, у нас есть журнал в режиме простого ведения журнала и резервное копирование журнала до начала процесса.

- = - = - = - = - UPDATE - = - = - = - = -

Спасибо всем за комментарии до сих пор. Следующее - это то, что привело меня к мысли, что журнал не будет расти из-за открытой транзакции:

Я получаю следующую ошибку ...

Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception: System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Поэтому после этого совета я пошел в log_reuse_wait_desc column in sys.databases « log_reuse_wait_desc column in sys.databases » и в нем было указано значение « ACTIVE_TRANSACTION ».

Согласно Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx

Это означает следующее:

Транзакция активна (все модели восстановления). • Долгосрочная транзакция может существовать в начале резервного копирования журнала. В этом случае для освобождения пространства может потребоваться другая резервная копия журнала. Дополнительные сведения см. В разделе «Длительные активные транзакции» далее в этом разделе.

• Отложенная транзакция (только для SQL Server 2005 Enterprise Edition и более поздних версий). Отложенная транзакция - это фактически активная транзакция, откат которой заблокирован из-за некоторого недоступного ресурса. Для получения информации о причинах отложенных транзакций и способах их перемещения из состояния отложенного платежа см. Раздел Отложенные транзакции.

Я что-то неправильно понял?

- = - = - = - ОБНОВЛЕНИЕ 2 - = - = - = -

Просто начался процесс с первоначальным размером файла журнала, установленным в 30 ГБ. Это займет пару часов.

- = - = - = - Окончательное ОБНОВЛЕНИЕ - = - = - = -

Проблема была вызвана тем, что файл журнала потребляет все доступное дисковое пространство. В последней попытке я освободил 120 ГБ, и он все еще использовал все это и в конечном итоге потерпел неудачу.

Я не понимал, что это происходит раньше, потому что, когда процесс запускался всю ночь, он возвращался к отказу. На этот раз мне удалось проверить размер файла журнала перед откатом.

Спасибо всем за ваш вклад.

code-examples.net

журнал транзакций для базы данных заполнен, но нет «первого активного файла журнала»

Во-первых, я хочу сказать, что у меня очень мало опыта работы с DB2. Тем не менее, мне поручено отслеживать проблему и решение этой проблемы.

Это база данных DB2, и наши тестеры говорят, что они получают:

Журнал транзакций для базы данных заполнен .. SQLCODE = -964, SQLSTATE = 57011, ВОДИТЕЛЬ = 4.13.127 SQL Код: -964, SQL Состояние: 57011

Я увеличил количество LOGPRIMARY до '40'. Тем не менее, похоже, что журналы транзакций все еще заполнены. Затем я решил «обрезать» журналы транзакций. Процедура, которую я имею, - обрезать все до активного журнала транзакций. Тем не менее, я не могу определить, активный журнал:

$ db2 get db config for MyDB | grep -i 'log' Log retain for recovery status = NO User exit for logging status = NO Catalog cache size (4KB) (CATALOGCACHE_SZ) = 278 Log buffer size (4KB) (LOGBUFSZ) = 1997 Log file size (4KB) (LOGFILSIZ) = 1024 Number of primary log files (LOGPRIMARY) = 40 Number of secondary log files (LOGSECOND) = 12 Changed path to log files (NEWLOGPATH) = Path to log files = /home/db2/db2inst1/db2inst1/NODE0000/SQL00001/LOGSTREAM0000/ Overflow log path (OVERFLOWLOGPATH) = Mirror log path (MIRRORLOGPATH) = First active log file = Block log on disk full (BLK_LOG_DSK_FUL) = NO Block non logged operations (BLOCKNONLOGGED) = NO Percent max primary log space by transaction (MAX_LOG) = 0 Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0 Percent log file reclaimed before soft chckpt (SOFTMAX) = 520 HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = 0 HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 First log archive method (LOGARCHMETh2) = OFF Archive compression for logarchmeth2 (LOGARCHCOMPR1) = OFF Options for logarchmeth2 (LOGARCHOPT1) = Second log archive method (LOGARCHMETh3) = OFF Archive compression for logarchmeth3 (LOGARCHCOMPR2) = OFF Options for logarchmeth3 (LOGARCHOPT2) = Failover log archive path (FAILARCHPATH) = Number of log archive retries on error (NUMARCHRETRY) = 5 Log archive retry Delay (secs) (ARCHRETRYDELAY) = 20 Log pages during index build (LOGINDEXBUILD) = OFF Log DDL Statements (LOG_DDL_STMTS) = NO Log Application Information (LOG_APPL_INFO) = NO $

Я отметить, что файлы журнала транзакций появляются в/главная/db2/db2inst1/db2inst1/NODE0000/SQL00001/LOGSTREAM0000 /.

Правильно ли установлена ​​регистрация транзакций? Будет ли увеличение журналов ответом? Или я должен нажимать на пользователей, чтобы побудить их делать больше коммитов?

dba.stackovernet.com

Журнал транзакций для базы данных заполнен MS SQL Server

У меня есть длительный процесс, который открывает транзакцию на полную длительность.

У меня нет контроля над тем, как это выполняется.

Поскольку транзакция хранится открытым в течение полной продолжительности, когда журнал транзакций заполняется, SQL Server не может увеличить размер файла журнала.

Таким образом, процесс выходит из строя с ошибкой "The transaction log for database 'xxx' is full" .

Я попытался предотвратить это, увеличив размер файла журнала транзакций в свойствах базы данных, но получаю ту же ошибку.

Не уверен, что я должен попробовать дальше. Процесс работает в течение нескольких часов, поэтому играть в пробную версию и ошибки непросто.

Есть идеи?

Если кому-то интересно, процесс представляет собой импорт организации в Microsoft Dynamics CRM 4.0.

Существует много дискового пространства, у нас есть журнал в режиме простого ведения журнала и резервное копирование журнала до начала процесса.

– = – = – = – = – UPDATE – = – = – = – = –

Спасибо всем за комментарии до сих пор. Следующее – это то, что привело меня к мысли, что журнал не будет расти из-за открытой транзакции:

Я получаю следующую ошибку …

Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception: System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Поэтому после этого совета я пошел в log_reuse_wait_desc column in sys.databases « log_reuse_wait_desc column in sys.databases » и в нем было указано значение « ACTIVE_TRANSACTION ».

Согласно Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx

Это означает следующее:

Транзакция активна (все модели восстановления). • Долгосрочная транзакция может существовать в начале резервного копирования журнала. В этом случае для освобождения пространства может потребоваться другая резервная копия журнала. Дополнительные сведения см. В разделе «Длительные активные транзакции» далее в этом разделе.

• Отложенная транзакция (только для SQL Server 2005 Enterprise Edition и более поздних версий). Отложенная транзакция – это фактически активная транзакция, откат которой заблокирован из-за некоторого недоступного ресурса. Для получения информации о причинах отложенных транзакций и способах их перемещения из состояния отложенного платежа см. Раздел Отложенные транзакции.

Я что-то неправильно понял?

– = – = – = – ОБНОВЛЕНИЕ 2 – = – = – = –

Просто начался процесс с первоначальным размером файла журнала, установленным в 30 ГБ. Это займет пару часов.

– = – = – = – Окончательное ОБНОВЛЕНИЕ – = – = – = –

Проблема была вызвана тем, что файл журнала потребляет все доступное дисковое пространство. В последней попытке я освободил 120 ГБ, и он все еще использовал все это и в конечном итоге потерпел неудачу.

Я не понимал, что это происходит раньше, потому что, когда процесс запускался всю ночь, он возвращался к отказу. На этот раз мне удалось проверить размер файла журнала перед откатом.

Спасибо всем за ваш вклад.

Solutions Collecting From Web of "Журнал транзакций для базы данных заполнен"

Это одноразовый скрипт или регулярная работа?

Раньше для специальных проектов, которые временно требуют много места для файла журнала, я создал второй файл журнала и сделал его огромным. По завершении проекта мы удалим дополнительный файл журнала.

Чтобы устранить эту проблему, измените модель восстановления на « Simple», затем « Shrink Files Log»

1. Свойства базы данных> Параметры> Модель восстановления> Простой

2. Задачи базы данных> Усадка> Файлы> Журнал

Готово.

Затем проверьте размер файла журнала db в свойствах базы данных> Файлы> Файлы базы данных> Путь

Чтобы проверить полный журнал сервера sql: открыть средство просмотра файлов журнала в SSMS> База данных> Управление> Журналы SQL Server> Текущие

Однажды у меня была эта ошибка, и это оказалось жестким диском сервера, который исчерпывает дисковое пространство.

У вас есть Включить автозагрузку и неограниченный рост файлов, которые включены для файла журнала? Вы можете редактировать их через SSMS в разделе «Свойства базы данных> Файлы»

Это старый подход к школе, но если вы выполняете итеративное обновление или вставляете операцию в SQL, то, что работает в течение длительного времени, рекомендуется периодически (программно) называть «контрольную точку». Вызов «контрольной точки» заставляет SQL записывать на диск все эти изменения только для памяти (грязные страницы, они называются) и элементы, хранящиеся в журнале транзакций. Это приводит к периодической очистке журнала транзакций, что предотвращает проблемы, подобные описанным.

Если ваша модель восстановления базы данных заполнена и у вас не было плана обслуживания резервного копирования журнала, вы получите эту ошибку, потому что журнал транзакций будет заполнен из-за LOG_BACKUP .

Это предотвратит любые действия в этой базе данных (например, сжимается), а SQL Server Database Engine вызовет ошибку 9002.

Чтобы преодолеть это поведение, я советую вам проверить это. Журнал транзакций для базы данных «SharePoint_Config» заполнен из-за LOG_BACKUP, который показывает подробные шаги для решения проблемы.

Следующее будет обрезать журнал.

USE [yourdbname] GO -- TRUNCATE TRANSACTION LOG -- DBCC SHRINKFILE(yourdbname_log, 1) BACKUP LOG yourdbname WITH TRUNCATE_ONLY DBCC SHRINKFILE(yourdbname_log, 1) GO -- CHECK DATABASE HEALTH -- ALTER FUNCTION [dbo].[checker]() RETURNS int AS BEGIN RETURN 0 END GO

ru.msqlserver.com

Журнал транзакций для базы данных заполнен. Чтобы узнать, почему пространство в журнале нельзя использовать повторно, см. Столбец log_reuse_wait_desc в sys.databases

Как сказал Дэмиен, вы должны выяснить причину, почему ваш журнал растет. Отметьте эту должность для объяснения: Повторное использование журнала транзакций Подождите

Удаление многих записей потребует значительного пространства журналов, поэтому, если вы не можете сделать больше места для файла журнала, вам может потребоваться удалить эти строки несколькими меньшими шагами. Если вы используете «полное» восстановление, вам нужно будет сделать резервную копию журнала после каждого шага.

С другой стороны, BACKUP LOG … WITH TRUNCATE_ONLY – это вообще очень плохая идея. Если вы находитесь в режиме полного восстановления, это приведет к поломке цепочки резервных копий и не позволит вам выполнить восстановление в определенный момент времени. Если вам не нужна восстанавливаемость по времени, используйте вместо этого параметр восстановления «простой». В противном случае возьмите реальную резервную копию журнала и сохраните ее вместе с другими файлами резервных копий.

DBCC SHRINKFILE в файле журнала никоим образом не помогает для базы данных, которую вы сокращаете. Вы можете использовать его, чтобы освободить место для других БД на диске, но он не освободит место для текущей базы данных, поскольку он может удалить только пространство, которое можно использовать повторно. Это означает, что любое пространство, освобожденное им, могло быть использовано для вашей транзакции в любом случае.

В стороне, это всегда хорошая практика (и, возможно, решение для этого типа проблемы), чтобы удалить большое количество строк, используя партии:

WHILE EXISTS (SELECT 1 FROM YourTable WHERE <yourCondition>) DELETE TOP(10000) FROM YourTable WHERE <yourCondition>

Я также столкнулся с той же проблемой. Я пришел к выводу, что это исключение возникает, когда диск, на котором находится файл базы данных, является полным. Для решения этой проблемы я просто увеличиваю размер диска.

ru.msqlserver.com


KDC-Toru | Все права защищены © 2018 | Карта сайта