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

Исправление: Блокировки таблицы не преобразуются при добавлении большого количества строк в таблицу SQL Server 2008

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:2448971

Проблема
Рассмотрим описанную ниже ситуацию.:

  • Вставить несколько строк в таблицу в Microsoft SQL Server 2008 с помощью одного из следующих запросов:
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    Примечания
    • надписью<target_table></target_table>Прототип представляет имя фактический целевой таблицы.
    • надписью<predicate></predicate>Прототип представляет фактическое предиката.
    • надписью<source_table></source_table>Прототип представляет фактическое исходной таблицы.
  • Превышен порог укрупнения блокировок таблицы.
В этом случае ядро базы данных не укрупнить блокировки таблицы.
Причина
Эта проблема возникает, если SQL Server внутренне не учитывает новых блокировок, которые создаются операции INSERT. Таким образом порог укрупнения блокировок может не будет применяться при необходимости.
Решение

Сведения о пакете обновления

Чтобы решить эту проблему, получите последний пакет обновления для SQL Server 2008.

Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
968382Как получить последний пакет обновления для SQL Server 2008
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..
Сначала этой проблемы появилось в SQL Server 2008 с пакетом обновления 2 (SP2) для SQL Server 2008.

Дополнительная информация
Для получения дополнительных сведений о укрупнение блокировки посетите следующий веб-узел Microsoft TechNet:
Чтобы определить, являются ли расширена блокировки таблицы, выполните следующие инструкции Transact-SQL:
USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x   
Если блокировка таблицы расширена, последняя инструкция SELECT возвращает значение1-или-2. Если блокировки таблицы, которые не расширена, последняя инструкция SELECT возвращает значение40,066-или-40,067.


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

Свойства

Номер статьи: 2448971 — последний просмотр: 11/05/2010 07:54:00 — редакция: 2.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer

  • kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 KbMtru
Отзывы и предложения