Logg på med Microsoft
Logg på, eller opprett en konto.
Hei,
Velg en annen konto.
Du har flere kontoer
Velg kontoen du vil logge på med.

Symptomer

Anta at du legger til en kolonne i en tabell i Microsoft SQL Server 2012 eller SQL Server-2014. Når størrelsen på raden er nær den maksimale tillatte størrelsen som er 8,060 byte, kan det ta lang tid å legge til operasjonen.

Årsak

Dette problemet oppstår fordi når den totale størrelsen på raden er nær den maksimalt tillatte radstørrelsen, SQL Server utfører en fullstendig skanning av tabellen for å sikre at du legger til en ny kolonne ikke bryter retningslinjene for dataintegritet. Versjoner før SQL Server 2012 ikke gjør denne kontrollen, og som gjør datadefinisjonsspråk (DDL) kjører raskere. Denne virkemåten fører imidlertid til feil i etterfølgende operasjoner som for eksempel rad oppdatering eller redusere Hvis radstørrelsen overstiger tillatt størrelse.

Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:


Hvis du vil ha mer informasjon

  • Du kan aktivere sporingsflagg 647 ved å bruke oppstartsparameteren. For informasjon, kan du se Database Engine alternativer for tjenesteoppstart.

  • Du kan kjøre følgende spørring (må erstatte < navn > med navnet ditt faktiske tabellen) for å teste den bestemte tabellen før operasjonen på et produksjonssystem, og planlegge virkningen av dette problemet. Hvis resultatet er større enn 8,060, er tabellen utsatt for dette problemet. Hvis du har fjernet kolonner, må du i tillegg endre tabell med alternativet Gjenoppbygg. Gjenoppbygging av tabellen, kan du gjøre spørringen returnerer riktige resultater.

    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 vurdere å legge til kolonner med variabel lengde eller sparsommelig når programmet ofte legger til nye kolonner i tabellen. Det er en bare metadata-operasjon selv om den totale størrelsen på alle kolonnene overskrider 8,060 byte.


Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?
Når du trykker på Send inn, blir tilbakemeldingen brukt til å forbedre Microsoft-produkter og -tjenester. IT-administratoren kan samle inn disse dataene. Personvernerklæring.

Takk for tilbakemeldingen!

×