Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Symptom

Anta att du lägger till en kolumn i en tabell i Microsoft SQL Server 2012 eller SQL Server 2014. När rad storleken är nära den högsta tillåtna storleken som är 8 060 byte kan det ta lång tid att lägga till en åtgärd.

Orsak

Problemet uppstår eftersom den totala storleken på raden är nära den högsta tillåtna rad storleken gör SQL Server en fullständig genomsökning av tabellen för att se till att en ny kolumn inte bryter mot data integriteten. De här versionerna före SQL Server 2012 gör inte den här kontrollen och gör att DDL (Data Definition Language) körs snabbare. Det här beteendet gör att det inte går att utföra efterföljande operationer, till exempel rad uppdatering eller krympning om rad storleken överskrider den tillåtna storleken.

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

Mer information

  • Du kan aktivera spårnings flaggan 647 med hjälp av start parametern. Mer information finns i Start alternativ för tjänsten databas motor.

  • Du kan köra följande fråga (Ersätt <tabell namn> med det faktiska tabell namnet) för att testa den aktuella tabellen före operationen på ett produktions system och planera effekten av detta problem. Om resultatet är större än 8 060 beror problemet på tabellen. Om du har tappat kolumnerna måste du dessutom ändra tabellen med alternativet återskapa. Återskapa tabellen kan göra så att frågan returnerar rätt resultat.

    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 
  • Du kan överväga att lägga till kolumner för variabel längd eller glesa kolumner när programmet ofta lägger till nya kolumner i tabellen. Det är endast en metadata-åtgärd även om total storleken för alla kolumner är större än 8 060 byte.

Status

Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×