FIX: Gegevens mogen worden verwijderd wanneer u een andere kolom van variabele lengte in een tabel van een upgrade van SQL Server 2005-database bijwerken

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 3120595
Symptomen
Wanneer u een waarde in een kolom van variabele lengte in een tabel van een database die is bijgewerkt van Microsoft SQL Server 2005 hebt bijgewerkt, worden gegevens in een andere kolom van variabele lengte in dezelfde rij wordt verwijderd.

Dit probleem doet zich voor in 2014 van Microsoft SQL Server en Microsoft SQL Server 2012. In het volgende scenario kan voor een database om dit probleem te hebben. Deze lijst geeft een reeks gebeurtenissen:

  • Een database wordt in SQL Server 2005 gemaakt.
  • U een tabel wijzigen in SQL Server 2005, en zet een of meer kolommen met variabele lengte aan het einde van de tabeldefinitie.
  • U nieuwe variabele lengte kolommen toevoegen die een vergelijkbaar gegevenstype en de lengte van kolommen verloren hebben.
  • De database van SQL Server 2005 bijgewerkt naar SQL Server 2014 of SQL Server 2012.
  • U kunt de waarde van een andere kolom van variabele lengte later bijwerken en de bijgewerkte gegevens heeft overloopt naar een nieuwe pagina.
In dit scenario kunnen de gegevens in een of meer van de toegevoegde kolommen in dezelfde rij worden verwijderd.

U kunt het script in de Meer informatie Controleer of de volgende sectie:

  • Alle tabellen in een database verwijderd of kolommen met variabele lengte
  • Of extra kolommen met variabele lengte zijn gemaakt met overeenkomende compenseert
Opmerking Dit probleem is niet gevonden door DBCC CHECKDB.
Oplossing
Opmerking Deze oplossing voorkomt alleen dat toekomstige versies van het probleem.

Belangrijk Als u de database van SQL Server 2005 2014 van SQL Server of SQL Server 2012 bijwerkt, ervoor zorgen dat u naar de sectie 'Omzeiling verwijst'.

Dit probleem werd in eerste instantie opgelost in de volgende cumulatieve update voor SQL Server:

Dit zijn de meest recente cumulatieve updates voor deze programmaversies.

Aanbeveling: Installeer de meest recente cumulatieve update voor SQL Server 2014 of SQL Server 2012

Installeer de elke nieuwe cumulatieve update voor SQL Server alle hotfixes bevat en alle beveiligingscorrecties die zijn opgenomen in de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:



Opmerking Zie voor meer informatie over de meest recente versies van SQL Server Waar vind ik informatie over de nieuwste SQL Server maakt.
Workaround
Belangrijk Deze tijdelijke oplossing van toepassing wanneer u de database een van SQL Server 2005 upgrade 2014 van SQL Server of SQL Server 2012 en voordat u de UPDATE-instructies worden uitgevoerd in de bijgewerkte database laten.

U kunt dit probleem omzeilen als u kolommen in een tabel, zorg dat u een van de volgende doet voordat u bijwerken of verwijderen van rijen:

  • De geclusterde index opnieuw met behulp van ALTER INDEX (...) OPNIEUW
  • De heap opnieuw met behulp van ALTER TABLE (...) OPNIEUW

Meer informatie
U kunt het volgende script om te controleren of alle tabellen in een database kolommen die mogelijk zijn beïnvloed door dit probleem hebt verwijderd.

Opmerking Als het script niet alle rijen, dat betekent dat dit probleem op dit moment niet voor elke tabel in uw systeem geldt.
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];

Belangrijk Dit script moet alleen worden gebruikt voor het doel en de werkingssfeer van dit artikel.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 3120595 - Laatst bijgewerkt: 05/31/2016 08:23:00 - Revisie: 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 KbMtnl
Feedback