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

Симптоми

Приемете, че добавяте колона към таблица в Microsoft SQL Server 2012 или SQL Server 2014. Когато размерът на реда е близък до максималния разрешен размер, който е 8 060 байта, добавянето на операция може да отнеме много време.

Причина

Проблемът възниква, тъй като когато общият размер на реда е близък до максималния разрешен размер на реда, SQL Server прави пълно сканиране на таблицата, за да се уверите, че добавянето на нова колона не нарушава целостта на данните. Версиите преди SQL Server 2012 не правят тази проверка и това улеснява по-бързото стартиране на езика за дефиниране на данни (DDL). Обаче това поведение води до неуспешно изпълнение на последващи операции, като например актуализиране на ред или свиване, ако размерът на реда надвишава позволения размер.

Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:

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

  • Можете да включите флага за проследяване 647 с помощта на параметъра Startup. За информация вижте Опции за стартиране на услугата за двигатели на базата данни.

  • Можете да изпълните следната заявка (Моля, заменете <име на таблица> с истинското име на таблицата), за да тествате конкретната таблица преди операцията в системата за производство и да планирате ефекта от този проблем. Ако резултатът е по-голям от 8 060, вашата таблица подлежи на този проблем. Освен това, ако сте изпуснали колони, трябва да промените таблицата с опция за повторно създаване. Възстановяването на таблицата може да накара заявката да върне правилните резултати.

    select  1+1+2 + 2 +  (case  when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end)  +  ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 +  sum( case when max_length=-1 then 24 else max_length end)  from sys.system_internals_partition_columns   col join sys.partitions par on col.partition_id = par.partition_id  where object_id = object_id ('<table name>')  and  index_id in (0,1) and partition_number =1 
  • Можете да помислите за добавяне на колони с променлива дължина или откъслечни колони, когато приложението често добавя нови колони в таблицата. Това е операция само за метаданни, дори ако общият размер на всички колони надвишава 8 060 байта.

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

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

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

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

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

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

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

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

×