Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Ознаки

Припустимо, що ви додаєте стовпець до таблиці в Microsoft SQL Server 2012 або SQL Server 2014. Якщо розмір рядка близький до максимального дозволеного розміру, що становить 8 060 байтів, операція додавання може тривати довгий час.

Причина

Ця проблема виникає тому, що, коли загальний розмір рядка близький до максимального дозволеного розміру рядка, SQL Server виконує повне сканування таблиці, щоб переконатися, що додавання нового стовпця не порушує цілісність даних. Версії перед SQL Server 2012 не роблять цю перевірку, а також, що робить мову визначення даних (DDL) працює швидше. Однак ця поведінка призводить до провалу наступних операцій, таких як оновлення рядка або стискання, якщо розмір рядка перевищує дозволений розмір.

Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:

Додаткові відомості

  • Ви можете ввімкнути прапор трасування 647 за допомогою параметра запуску. Докладні відомості наведено в статті Параметри запуску служби обробника баз даних.

  • Ви можете виконати наведений нижче запит (замініть ім'я <таблиці> з іменем дійсної таблиці), щоб перевірити певну таблицю перед операцією в системі виробництва, а також планувати ефект цієї проблеми. Якщо результат більший за 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. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×