В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

После удаления данных из таблицы в SQL Server с помощью инструкции DELETE неполностью освобождается пространство, которое используется таблицей

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 913399
Номер ошибки: 219514 (SQL Server 8.0)
Проблема
После использования инструкции DELETE в Microsoft SQL Server для удаления данных из таблицы, можно заметить, что пространство, которое использует таблицы не удаляется полностью. При попытке вставить данные в базе данных, может появиться следующее сообщение об ошибке:
Не удалось выделить место для объекта "Имя_таблицы«базы данных»Имя базы данных"из-за группе «PRIMARY».
ПримечаниеИмя_таблицы представляет имя таблицы. Имя базы данных представляет имя базы данных, содержащей таблицу.
Причина
Эта проблема возникает потому, что только SQL Server удаляет все страницы, которые в таблице кучи используется при выполнении следующих условий:
  • Происходит удаление в этой таблице.
  • Блокировка таблицы удерживается.
Примечание Таблица кучи — любая таблица, не связанная с кластеризованным индексом.

Если страницы не освобождаются, другие объекты в базе данных не может использовать страницы.

Однако если включен уровень изоляции на основе управления версиями строк в базе данных SQL Server 2005, страницы не могут быть выпущены даже если блокировка таблицы удерживается. Дополнительные сведения об уровнях изоляции на основе управления версиями строк приведены в разделе «Уровни изоляции на основе управления версиями строк с помощью» в электронной документации по SQL Server 2005.
Временное решение
Чтобы обойти эту проблему, воспользуйтесь одним из следующих методов:
  • Включите в инструкцию DELETE подсказка TABLOCK, если не используется уровень изоляции на основе rowversioning. Например использование statementthat следующим образом:
    DELETE FROM <TableName> WITH (TABLOCK)
    Примечание <TableName></TableName> представляет имя таблицы.
  • Если нужно удалить записи allthe в таблице с помощью инструкции TRUNCATE TABLE. Например можно используйте инструкцию, похож на экран:
    TRUNCATE TABLE <TableName>
  • Создайте кластеризованный индекс для столбца таблицы. Для получения дополнительных сведений о способах создания кластеризованного индекса на таблице, приведены в разделе «Creatinga кластеризованный индекс» в электронной документации по SQL Server.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 913399 — последний просмотр: 03/30/2015 00:31:00 — редакция: 3.0

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 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbexpertiseadvanced kbprb kbmt KB913399 KbMtru
Отзывы и предложения