Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Симптоми

Обмислете следния сценарий:

  • Вмъквате много редове в таблица в Microsoft SQL Server 2008 или в SQL Server 2008 R2 с помощта на една от следните заявки:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    Бележки

    • <target_table> контейнер представлява действителната целева таблица име.

    • Контейнерът за <> представлява действителната предпоставка.

    • Контейнерът за <source_table> представлява действителната таблица източник.

  • Надхвърлен е прагът за ескалация на заключване на таблицата.

В този случай ядрото на базата данни не ескалира ключалките на таблицата.

Причина

Този проблем възниква, защото SQL Server не отчита вътрешно всички нови заключвания, генерирани от операциите за вмъкване. Следователно прагът за ескалация на заключване може да не се задейства, когато е необходимо.

Решение

Информация за сервизния пакет за SQL Server 2008

За да отстраните този проблем, получете най-новата услуга за SQL Server 2008. за повече информация щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

968382 Как да получите най-новия сервизен пакет за SQL Server 2008

Информация за сервизния пакет за SQL Server 2008 R2

За да отстраните този проблем, получете най-новата сервизна опаковка за SQL Server 2008 R2. За повече информация щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2527041Как да получите най-новия сервизен пакет за SQL Server 2008 R2

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".Този проблем е коригиран първо в SQL Server 2008 Service Pack 2 за SQL Server 2008. този проблем е коригиран първо в SQL Server 2008 R2 Service Pack 1 за SQL Server 2008 R2.

Повече информация

За повече информация за заключване на ескалация посетете следния уеб сайт на Microsoft TechNet:

Обща информация за ескалацията на заключванеЗа да определите дали ключалките на една таблица са ескалирани, изпълнете следните отчети за преговаряне:

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 

Ако ключалките на таблицата са ескалирани, последната команда за ИЗБИРАНЕ връща стойност от 1 или 2. Ако ключалките на таблицата не се покачват, последното командата SELECT връща стойност от 40 066 или 40 067.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×