Korriger: Kolonnedata kan bli slettet når du oppdaterer en annen variabel lengde-kolonne i en tabell i en database som oppgraderte fra SQL Server 2005

VIKTIG: Denne artikkelen ble oversatt med maskinoversettelsesprogramvare fra Microsoft og muligens redigert av Microsoft Community via CTF-teknologi i stedet for av en oversetter. Microsoft tilbyr både menneskelig oversatte og maskinoversatte/Community-redigerte artikler, slik at du får tilgang til alle artiklene i vår Knowledge Base på ditt eget språk. En maskinoversatt eller Community-redigert artikkel er imidlertid ikke alltid perfekt. Den kan inneholde feil i vokabular, syntaks eller grammatikk, mye likt en fremmedspråklig som forsøker å snakke språket ditt. Microsoft har ikke ansvar for unøyaktige opplysninger, feil eller skade forårsaket av feilaktig oversettelse av innholdet eller kundenes bruk av informasjonen. Microsoft oppdaterer jevnlig maskinoversettelsesprogramvaren og -verktøyene for å forbedre redigering av maskinoversatte tekster.

Den engelske versjonen av denne artikkelen er den følgende: 3120595
Symptom
Når du oppdaterer en verdi i en variabel lengde-kolonne i en tabell i en database som ble oppgradert fra Microsoft SQL Server 2005, slettes dataene i en annen variabel lengde-kolonnen på samme rad.

Dette problemet oppstår i 2014 for Microsoft SQL Server og Microsoft SQL Server 2012. Følgende situasjon kan utsette en database for dette problemet. Denne listen representerer en hendelsessekvens:

  • Det opprettes en database i SQL Server 2005.
  • Du endrer en tabell i SQL Server 2005, og slipp deretter én eller flere kolonner for variabel lengde på slutten av tabelldefinisjonen.
  • Du legger til nye variabel lengde kolonner som har en lignende datatypen og lengden på kolonnene slippes.
  • Databasen er oppgradert fra SQL Server 2005 eller SQL Server-2014 SQL Server 2012.
  • Du oppdaterer senere verdien til en annen kolonne med variabel lengde, og de oppdaterte dataene har flyter over til en ny side.
I dette scenariet, kan dataene i én eller flere av kolonnene som nylig er lagt til i den samme raden slettes.

Du kan bruke skript i den Hvis du vil ha mer informasjon delen for å kontrollere følgende:

  • Om alle tabellene i en gitt database har slettet kolonner med ulik lengde
  • Om flere kolonner med ulik lengde er opprettet som har samsvarende forskyver
Obs! Dette problemet er ikke oppdaget av DBCC CHECKDB.
Løsning
Obs! Denne hurtigreparasjonen forhindrer bare fremtidige forekomster av problemet.

Viktig Hvis du oppgraderer databasen fra SQL Server 2005 eller SQL Server-2014 SQL Server 2012, må du kontrollere at du refererer til i Løsning-delen.

Dette problemet ble først løst i den følgende kumulative oppdateringen for SQL Server:

Dette er de nyeste kumulative oppdateringene for disse versjonene av programmet.

Anbefaling: Installere den nyeste kumulative oppdateringen for SQL Server-2014 eller SQL Server 2012

Installere hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som er inkludert i den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:



Obs! Hvis du vil ha mer informasjon om de nyeste versjoner av SQL Server, se Hvor du finner informasjon om siste SQL-serveren bygger.
Workaround
Viktig Bruk denne løsningen når du oppgraderer databasen fra SQL Server 2005 eller SQL Server-2014 SQL Server 2012, og før du lar UPDATE-setninger som skal kjøres i den oppgraderte databasen.

Hvis du vil omgå dette problemet hvis du slipper kolonner i en tabell, må du kontrollere at du gjør ett av følgende før du oppdaterer eller sletter rader:

  • Bygge sektorgruppert indeks ved å bruke Endre INDEKSEN (...) BYGGE
  • Bygge heapen ved hjelp av ALTER TABLE (...) BYGGE

Mer informasjon
Du kan bruke følgende skript til å kontrollere om alle tabellene i en gitt database har slettet kolonner som potensielt er berørt av dette problemet.

Obs! Hvis skriptet ikke returnerer noen rader, som betyr at dette problemet for øyeblikket ikke gjelder for en hvilken som helst tabell i systemet.
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

Viktig Dette skriptet bør bare brukes for formålet til og omfanget av denne artikkelen.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Advarsel: Denne artikkelen er autooversatt

Egenskaper

Artikkel-ID: 3120595 – Forrige gjennomgang: 05/31/2016 08:24:00 – Revisjon: 11.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtno
Tilbakemelding