У меня есть длительный процесс, который содержит транзакцию на полную длительность.
У меня нет контроля над тем, как это выполняется.
Поскольку транзакция остается открытой в течение всего времени, когда журнал транзакций заполняется, 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 ГБ, и он все еще использовал все это и в итоге потерпел неудачу.
Я не понимал, что это происходит раньше, потому что, когда процесс запускался всю ночь, он возвращался к отказу. На этот раз мне удалось проверить размер файла журнала перед откатом.
Спасибо всем за ваш вклад.