Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

Să presupunem că adăugați o coloană la un tabel în Microsoft SQL Server 2012 sau SQL Server 2014. Atunci când dimensiunea rândului este aproape de dimensiunea maximă permisă care este 8.060 bytes, operațiunea de Adăugare poate dura mult timp.

Cauză

Problema apare deoarece, când dimensiunea totală a rândului este aproape de dimensiunea de rând maximă permisă, SQL Server efectuează o scanare completă a tabelului, pentru a vă asigura că adăugarea unei coloane noi nu încalcă integritatea datelor. Versiunile înainte de SQL Server 2012 nu fac acest lucru, iar acest lucru face ca limba definiției date (DDL) să ruleze mai rapid. Cu toate acestea, acest comportament are ca rezultat eșecul operațiunilor ulterioare, cum ar fi actualizarea rândurilor sau micșorarea, dacă dimensiunea rândului depășește dimensiunea permisă.

Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:

Mai multe informații

  • Puteți să activați semnalizatorul de urmărire 647 utilizând parametrul Startup. Pentru informații, consultați opțiunile de pornire a serviciului motor de baze de date.

  • Puteți rula următoarea interogare (vă rugăm să înlocuiți <nume tabel> cu numele de tabel real) pentru a testa tabelul respectiv înainte de operațiunea unui sistem de producție și a planifica efectul acestei probleme. Dacă rezultatul este mai mare decât 8.060, tabelul este supus acestei probleme. În plus, dacă ați renunțat la coloane, trebuie să modificați tabelul cu opțiunea reconstruire. Reconstruirea tabelului poate face ca interogarea să returneze rezultate corecte.

    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 
  • Puteți lua în considerare adăugarea coloanelor de lungime variabilă sau a coloanelor rare atunci când aplicația adaugă frecvent coloane noi la tabel. Este o operațiune doar pentru metadate, chiar dacă dimensiunea totală a tuturor coloanelor depășește 8.060 bytes.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×