У меня есть длительный процесс, который содержит транзакцию на полную длительность.Полный журнал транзакций для базы данных
У меня нет контроля над тем, как это выполняется.
Поскольку транзакция удерживается открытой в течение всего времени, когда журнал транзакций заполняется, SQL Server не может увеличить размер файла журнала.
Таким образом, процесс выходит из строя с ошибкой "The transaction log for database 'xxx' is full"
.
Я попытался предотвратить это, увеличив размер файла журнала транзакций в свойствах базы данных, но получаю ту же ошибку.
Не уверен, что я должен попробовать дальше. Процесс работает в течение нескольких часов, поэтому играть в пробную версию и ошибки непросто.
Любые идеи?
Если кому-то интересно, то процесс импорта организации в Microsoft Dynamics CRM 4.0.
Существует много дискового пространства, у нас есть журнал в простом режиме регистрации и резервное копирование журнала до сбрасывая процесса.
- = - = - = - = - ОБНОВЛЕНИЕ - = - = - = - = -
Спасибо всем за комментарии до сих пор. Ниже то, что привело меня к мысли о том, что журнал не будет расти из-за открытой сделки:
Я получаю следующее сообщение об ошибке ...
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 - = - = - = -
Просто стартовал процесс с начальным размером файла журнала, установленным в 30GB. Это займет пару часов.
- = - = - = - Final ОБНОВЛЕНИЕ - = - = - = -
Вопрос был фактически вызван лог-файл, потребляющего все доступное дисковое пространство.В последней попытке я освободил 120 ГБ, и он все еще использовал все это и в конечном итоге потерпел неудачу.
Я не понимал, что это происходит раньше, потому что, когда процесс бежал всю ночь, он возвращался к отказу. На этот раз мне удалось проверить размер файла журнала перед откатом.
Спасибо всем за ваш вклад.
re "... и резервное копирование журнала" .... если база данных находится в Простом режиме, вы не сможете создать резервную копию журнала, резервные копии журнала неприменимы для простого режима. Это объемный журнал? – SqlACID
Я создал резервную копию всей БД и сократил ее, что привело к сокращению журнала до 1 МБ. Затем я увеличил размер файла журнала до 20 ГБ, а теперь 30 ГБ. – Jimbo