Журнал транзакций неконтролируемое полностью на компьютере, на котором запущен SQL Server

Переводы статьи Переводы статьи
Код статьи: 317375 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

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

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

Однако в некоторых ситуациях возможно журнала транзакций стать очень большими и запуска места или почти полностью. Как правило получают следующее сообщение об ошибке при файла журнала транзакций занимает доступны место на диске и не может расширить больше:
Ошибка: 9002 Уровень опасности: 17, состояние: 2
Файл журнала для базы данных "%. * ls переполнена.
При использовании SQL Server 2005 появляется сообщение об ошибке появляется сообщение, является следующее:
Ошибка: 9002, уровень серьезности: 17 Состояние: 2
Журнал транзакций для базы данных "%. * ls переполнена. Чтобы выяснить причину пространство журнала не может быть повторно, обратитесь к столбцу log_reuse_wait_desc в sys.databases
Помимо этого сообщения об ошибке SQL Server может присвоить подозреваю, что базы данных из-за недостатка места для расширения журнала транзакций. Для Дополнительные сведения о том, как исправить ошибку, см. Раздел «Недостаточно места на диске» в электронной документации по SQL Server.

Кроме того журнал транзакций неограниченно может вызвать в следующих ситуациях:
  • Очень объемный файл журнала транзакций.
  • Транзакции может завершиться ошибкой и может запускаться для отката.
  • Операции может занять много времени.
  • Возможны проблемы с производительностью.
  • Могут возникнуть блокировки.

Причины

Журнал транзакций неограниченно может возникнуть из-за причины или сценариях: Примечание В SQL Server 2005, можно просмотреть log_reuse_wait и log_reuse_wait_desc столбцы в представлении каталога sys.databases определить следующее:
  • Почему пространство журнала транзакций не будет использоваться повторно
  • Почему нельзя усекать журнал транзакций

Незафиксированные транзакции

Явные транзакции остаются незафиксированных данных, если не используйте явная команда COMMIT или ROLLBACK. Это часто происходит при приложение выдает "Отмена" или команды Transact SQL KILL без соответствующую команду ROLLBACK. Возникает отмене транзакции, но откат не; Таким образом SQL Server не может выполнить усечение каждой транзакции которая возникает после этого прекращенная транзакция все еще открыт. Вы можете Используйте ссылку на инструкцию DBCC OPENTRAN Transact-SQL для проверки активного транзакции базы данных на определенный момент времени. Для получения дополнительных сведений об этом случае щелкните следующие номера статей базы знаний Майкрософт:
295108Незавершенная транзакция может содержать большое количество блокировок и регистра блокировка
171224 Общее представление о работе команды KILL Transact-SQL
Кроме того в разделе «Инструкции DBCC OPENTRAN» в SQL Сервер электронная документация.

Сценарии, которые могут привести к незафиксированные транзакции:
  • Разработка приложений, который предполагает, что все ошибки приводят Откатов.
  • Разработка приложений, который не использует полностью поведение SQL Server при откате к учетной записи с именем транзакции или специально вложенным именованные транзакции. При попытке выполнить откат к именованным внутренний транзакции, появляется следующее сообщение об ошибке:
    Сервер: Msg 6401, уровень 16, состояние 1, строка 13 нельзя откатить InnerTran. Нет Обнаружено транзакции или точки сохранения с этим именем.
    После SQL Server создает сообщение об ошибке продолжает следующему оператору. Это происходит по Дизайн. Дополнительные сведения содержатся в разделе «Вложенные операции» или "внутри SQL Раздел сервера» в электронной документации по SQL Server.

    Корпорация Майкрософт рекомендует Следуя при разработке приложения:
    • Открывайте только одну единицу транзакции (рассмотрите возможность возможность, другой процесс может вызвать вас).
    • Проверьте значение параметра @@ TRANCOUNT до выдачи ФИКСАЦИИ, ОТКАТ, возврата или похожие команды или инструкции.
    • Написать код, предполагалось, что другой Значение параметра @@ TRANCOUNT может «вложить» вашими и план для внешнего @@ TRANCOUNT для развертывания Назад, когда происходит ошибка.
    • Точки сохранения и знак параметры просмотра для транзакции. (Это не снять блокировки!)
    • Выполните полную проверку.
  • Приложение, которое разрешает взаимодействие с пользователем внутри транзакции. В результате транзакции остаются открытыми в течение длительного времени, которое причины блокировки и журналов транзакций роста, так как открытая проводка не может усечены и добавления новых транзакций в журнал после открытия транзакции.
  • Приложение, которое не проверяет значение параметра @@ TRANCOUNT для проверки что нет открытых проводок.
  • Сети или другие ошибки, закройте клиентское приложение подключение к SQL Server без его ведома.
  • Пул соединений. После рабочие потоки создаются, SQL Сервер повторно использует их, если они не являются обслуживает подключения. Если подключение пользователя Начинает транзакцию и отключается до фиксации или отката транзакции и подключение в дальнейшем повторно использует тот же поток предыдущего операции по-прежнему остается открытым. Такая ситуация приводит к блокировок, открытой из предыдущей операции и предотвращает усечение фиксации транзакции в журнале, что приводит к большой журнала размером файла.Для получения дополнительных сведений о подключении Использование пулов, щелкните следующий номер статьи базы знаний Майкрософт:
    164221Включение группировки подключений в приложении ODBC

Очень больших транзакций

Записи в файлы журнала транзакций, усекаются в Основы операций по транзакции. Если область транзакций имеет большой размер, который транзакции и все транзакции запускается после не удаляются из Если он завершается журнала транзакций. Это может привести к большие файлы журнала. Если транзакция является достаточно большой, файл журнала может использовать доступное дисковое пространство и тип «полный журнал транзакций» сообщение об ошибке, например ошибка 9002. Для получения дополнительных сведений о том, что делать, если появляется ошибок этого типа в разделе «Дополнительная информация» этой статьи появляется соответствующее сообщение. Кроме того занимает много времени и издержки SQL Server, чтобы откатить назад большой транзакции.

Операций: Инструкция DBCC DBREINDEX и создание ИНДЕКСА

Из-за изменений в модели восстановления в SQL Server 2000 в режиме полного восстановления и выполняется инструкция DBCC DBREINDEX транзакции журнал может увеличиться значительно более чем, SQL Server 7.0 в режим восстановления эквивалентный с использованием SELECT INTO или МАССОВОГО КОПИРОВАНИЯ, а также с "Trunc. Выход на chkpt.».

Несмотря на то, что размер операции журнала После операции DBREINDEX может быть проблемой, такой подход позволяет лучше Журнал производительности восстановления.

При восстановлении из резервных копий журналов транзакций

Это описано в следующем Microsoft Knowledge Base статья:
232196 Места на диске журнала появится расти после восстановления из резервной копии

Если установлен SQL Server 2000 использование восстановления с неполным протоколированием режим и выдавать МАССОВОГО КОПИРОВАНИЯ или инструкции SELECT INTO, всех измененных экстентов помечены и резервного копирования при создании резервной копии журнала транзакций. Несмотря на то что Это позволяет резервное копирование журналов транзакций и даже восстанавливаться после сбоев После выполнения массовых операций, это добавляет размер транзакции Заносит в журнал. Эта функция не относится к SQL Server 7.0. Только записи SQL Server 7.0 какие экстенты были изменены, но не записывает фактические экстентов. Следовательно ведение журнала занимает значительно больше свободного места в SQL Server 2000 чем в SQL Server 7.0 в журнал групповой режим, но не так сильно, как он не полностью режим.

Клиентские приложения не обрабатывать все результаты

Если выдача запроса SQL Server и не обрабатывается Результаты немедленно, вы можете удержания и уменьшения параллелизма на вашем сервер.

Например предположим, что выдавать запрос, требуется строк из двух страниц для заполнения результирующего набора. SQL Server выполняет синтаксический анализ, компиляция и выполнение запроса. Это означает, что разделяемые блокировки помещаются на двух страницах, содержит строки, которые необходимы для удовлетворения запроса. Кроме того, Предположим, что не все строки помещаются в один пакет TDS сервером SQL (метод которого сервер взаимодействует с клиентом). TDS-пакетов заполнения и отправки для клиента. Если все строки с первой страницы помещается на пакет TDS SQL Сервер освобождает разделяемую блокировку на этой странице, но оставляет разделяемую блокировку на второй страницы. SQL Server, а затем ждет клиенту запрашивать дополнительные данные (вы можете сделать это с помощью DBNEXTROW/DBRESULTS SQLNextRow/SQLResults, или Например, FetchLast/FetchFirst).

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

Запрашивает тайм-аута перед журнал транзакций завершает развертывание и появляется сообщение об ошибке false "Полный журнал"

В этой ситуации несмотря на то, что недостаточно места на диске, вы еще появляется сообщение об ошибке «пространства».

Эта ситуация зависит от SQL Server 7.0 и SQL Server 2000.

Запрос может привести к транзакции журнал автоматически разворачивать, если журнал транзакций почти заполнен. Это может потребовать дополнительного времени и может быть остановлена или может превысить его тайм-аута запроса из-за этот период. SQL Server 7.0 возвращает ошибки 9002 в данной ситуации. Эта проблема не влияет на SQL Server 2000.

В SQL Server 2000, если у вас есть Автоматическое сжатие включения параметра для базы данных, является очень небольшого времени во время которого журнал транзакций пытается автоматически разворачивать, но он не может Поскольку Автоматическое сжатие функция выполняется одновременно. Это также может привести к false экземпляры ошибка 9002.

Как правило автоматическое увеличение файлов журнала транзакций происходит быстро. Однако в следующих ситуациях может занять больше времени, чем Обычно:
  • Рост с шагом слишком малы.
  • Сервер медленно по разным причинам.
  • Диски, не достаточно быстро.

Нереплицированные операции

Размер журнала транзакций Microsoft Publisher При использовании репликации, можно развернуть базу данных. Проводки влияющие на объекты, которые были реплицированы, помечаются как для «репликация». Эти транзакции, такие как незафиксированных транзакций, не удаляются после контрольная точка или после создания резервных копий журнала транзакций до задач чтения журнала копирует транзакции в базу данных распространителя и пометок их. Если проблема, связанная с задачей чтения журнала не позволяет читать эти транзакции в очередь Microsoft Publisher базы данных, размер журнала транзакций может продолжать развертывание как не реплицированные транзакции увеличения числа. Используйте DBCC Ссылка OPENTRAN Transact-SQL для идентификации старых нереплицируемой транзакции.

Для получения дополнительных сведений об устранении неполадок с нереплицированные транзакции, обратитесь к разделам «sp_replcounters» и «sp_repldone» SQL Server Электронная документация.

Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
306769ИСПРАВЛЕНИЕ: Нельзя усечение журнала транзакций опубликованной базы данных моментальных снимков
240039 ИСПРАВЛЕНИЕ: DBCC OPENTRAN не содержит сведения о репликации
198514 ИСПРАВЛЕНИЕ: Восстановления на новом сервере приводит к транзакции остаются в журнале

Дополнительная информация

Журнал транзакций для любой базы данных управляется как набор виртуальные файлы журнала (VLF), размер которых SQL Server внутренне определяет зависимости общий размер файла журнала и приращение, используемых при журнала При развертывании. Журнал всегда расширяется в единицах VLF целиком и его можно сжимать только на границе VLF. VLF может существовать в одном из трех состояний: АКТИВНЫЙ, УСТРАНИМОЙ, и использовать его ПОВТОРНО.
  • АКТИВНЫЙ: Активная часть журнала начинается с последовательности минимальный журнал номер LSN, представляющий активной транзакции (незафиксированных данных). Активный Журнал заканчивается на номер LSN последней записи. Любое число VLF, содержащие любую часть активного журнала рассматриваются как активные VLF. (неиспользуемого пространства в физический журнал не является частью любой VLF.)
  • МОЖНО ВОССТАНОВИТЬ: Часть журнала, предшествующей старые активный операции необходим только сохранять последовательность резервных копий журналов в целях восстановления.
  • МНОГОКРАТНОГО ИСПОЛЬЗОВАНИЯ: Если резервные копии журналов транзакций не ведется работа, или если вы уже в резервные копии журнала, SQL Server повторно использует VLF перед старым активный транзакции.
Когда SQL Server достигнет конца физического файла журнала, его начинает повторное использование места в физический файл, выполнив обводя КРУЖКАМИ назад Операция начала файлов. По сути, повторным использованием SQL Server место в файле журнала, который больше не требуется для восстановления или резервного копирования целей. Если последовательность резервных копий журнала велся, часть журнала перед минимальным номером LSN, не может быть перезаписан, до момента создания резервной копии или усечения Эти записи журнала. После выполнения резервного копирования журнала SQL Server может обвести назад в начало файла. После SQL Server круги обратно до начала ввода записи журнала в файл журнала, многократно используемые части журнала, нажмите между конец логического журнала и активная часть журнала.

Для Дополнительные сведения см. в разделе «Физическая архитектура журнала транзакций» Документации по SQL Server. Кроме того, можно увидеть отличные диаграмм и обсуждение этого на странице 190 «Внутри SQL Server 7.0» (Soukup, Рон. Внутри Microsoft SQL Server 7.0, Microsoft Press, 1999), а также на страницах 182 через 186 «Внутри SQL Server 2000» («Delaney», «Kalen». Внутри Microsoft SQL Server 2000 Microsoft Press, 2000). У баз данных SQL Server 7.0 и SQL Server 2000 параметры автоматического увеличения и сжатия. Эти параметры можно использовать для облегчения сжать или растянуть журнала транзакций.

Для получения дополнительных сведений о том, как эти параметры могут повлиять на ваш сервер, щелкните следующий номер статьи базы знаний Майкрософт:
315512Вопросы настройки автоматического увеличения и сжатия в SQL Server
Существует разница между усечение и Сжатие файла журнала транзакций. Когда SQL Server усекает файл журнала транзакций, это означает, что содержимое этого файла (например, зафиксированных транзакций), удаляются. Тем не менее, когда вы просматриваете размер файл с точки зрения места на диске (например, в проводнике Windows или с помощью dir команда) размер не изменяется. Однако пространство внутри файл LDF теперь могут быть использованы новые транзакции. Только когда SQL Server сокращает размер файла журнала транзакций, действительно наблюдается изменение в физический размер файла журнала.

Для получения дополнительных сведений о том, как уменьшить журналы транзакций, щелкните следующие номера статей базы знаний Майкрософт:
256650Уменьшение размера журнала транзакций SQL Server 7.0
272318 Сжатие журнала транзакций в SQL Server 2000 с помощью инструкции DBCC SHRINKFILE
Для получения дополнительных сведений о журнале транзакций SQL Server 6.5 Использование, щелкните следующий номер статьи базы знаний Майкрософт:
110139Причин переполнения журнала транзакций SQL

Как найти запросы, которые используют большой объем пространства журнала в SQL Server 2005

В SQL Server 2005 sys.dm_tran_database_transactions динамические административные представления (DMV) можно использовать для поиска запросы, которые используют большой объем пространства журнала. Следующие столбцы в sys.dm_tran_database_transactions DMV можно использовать:
  • database_transaction_log_bytes_used
  • database_transaction_log_bytes_used_system
  • database_transaction_log_bytes_reserved
  • database_transaction_log_bytes_reserved_system
  • database_transaction_log_record_count
Можно выполнить запрос столбца sql_handle sys.dm_exec_requests DMV для получения текущего текста инструкции, использующего большой объем пространства журнала. Это можно сделать путем объединения sys.dm_tran_database_transactions DMV и sys.dm_tran_session_transactions DMV для столбца transaction_id, а затем добавляя дополнительные соединения с sys.dm_exec_requests по столбцу идентификатора session_id.

Для получения дополнительных сведений о sys.dm_tran_database_transactions DMV посетите следующий веб-узел Microsoft Developer Network (MSDN):
http://msdn2.Microsoft.com/en-us/library/ms186957.aspx
Для получения дополнительных сведений о sys.dm_tran_session_transactions DMV посетите веб-узле MSDN:
http://msdn2.Microsoft.com/en-us/library/ms188739.aspx
Для получения дополнительных сведений о sys.dm_exec_requests DMV посетите веб-узле MSDN:
http://msdn2.Microsoft.com/en-us/library/ms177648.aspx

Свойства

Код статьи: 317375 - Последний отзыв: 16 июля 2013 г. - Revision: 5.2
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Ключевые слова: 
kbsqlsetup kbinfo kbmt KB317375 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 317375

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com