Update: Spaltendaten gelöscht beim Aktualisieren einer anderen Spalte in einer Tabelle einer Datenbank von SQL Server 2005 aktualisiert mit variabler Länge

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 3120595
Problembeschreibung
Wenn Sie einen Wert in einer Spalte mit variabler Länge in einer Tabelle einer Datenbank, die von Microsoft SQL Server 2005 aktualisiert wurde aktualisieren, werden Daten in einer anderen Spalte mit variabler Länge in der gleichen Zeile gelöscht.

Dieses Problem tritt in Microsoft SQL Server 2014 und Microsoft SQL Server 2012. Das folgende Szenario kann eine Datenbank für dieses Problem verfügbar. Diese Liste stellt eine Abfolge von Ereignissen:

  • Eine Datenbank ist in SQL Server 2005 erstellt.
  • Ändern einer Tabelle in SQL Server 2005, und legen Sie eine oder mehrere Spalten mit variabler Länge am Ende der Tabellendefinition.
  • Neue Spalten mit variabler Länge, die einen ähnlichen Datentyp und Länge der gelöschten Spalten hinzufügen.
  • Die Datenbank wird von SQL Server 2005 auf SQL Server 2014 oder SQL Server 2012 aktualisiert.
  • Später aktualisieren Sie den Wert der anderen Spalte mit variabler Länge, und die aktualisierten Daten hat zu einer neuen Seite überläuft.
In diesem Szenario können die Daten in einer oder mehreren der hinzugefügten Spalten in derselben Zeile gelöscht.

Verwenden Sie das Skript in der Weitere Informationen Abschnitt Folgendes:

  • Gibt an, ob alle Tabellen in einer Datenbank Spalten variabler Länge gelöscht haben
  • Gibt an, ob zusätzliche Spalten variabler Länge erstellt wurden, die entsprechende versetzt
Hinweis Dieses Problem wird von DBCC CHECKDB nicht erkannt.
Lösung
Hinweis Dieses Update verhindert nur zukünftige Vorkommen des Problems.

Wichtig Wenn Sie die Datenbank von SQL Server 2005 auf SQL Server 2014 oder SQL Server 2012 aktualisieren, stellen Sie sicher, dass im Abschnitt "Abhilfe" finden.

Dieses Problem wurde erstmals die folgenden kumulative Update für SQL Server behoben:

Dies sind die neuesten kumulativen Updates für diese Programmversionen.

Empfehlung: Installieren Sie das neueste kumulative Update für SQL Server 2014 oder SQL Server 2012

Installieren Sie das einzelnen neue kumulative Update für SQL Server alle Hotfixes enthält und alle die Sicherheitsupdates im vorherigen kumulativen Update wurden. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:



Hinweis Weitere Informationen zu den neuesten SQL Server-Builds finden Sie unter Informationen zu den neuesten SQL Server erstellt.
Abhilfe
Wichtig Wenden Sie diese Lösung während der Aktualisierung der Datenbank von SQL Server 2005 2014 SQL Server oder SQL Server 2012 und vor dem UPDATE-Anweisung in der aktualisierten Datenbank ausgeführt werden können.

Um dieses Problem umgehen, wenn Sie Spalten in einer Tabelle löschen, stellen Sie sicher, dass Sie die folgenden Schritte vor dem Aktualisieren oder Löschen von Zeilen:

  • Erneuten Erstellen des gruppierten Indexes ALTER INDEX (...) Neu erstellen
  • Rebuild Heap mit ALTER TABLE (...) Neu erstellen

Weitere Informationen
Das folgende Skript können Sie überprüfen, ob alle Tabellen in einer Datenbank Spalten gelöscht, die möglicherweise von diesem Problem betroffen sind.

Hinweis Wenn das Skript keine Zeilen zurückgibt, bedeutet, dass dieses Problem derzeit nicht für jede Tabelle im System gilt.
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];

Wichtig Dieses Skript sollte nur für den Zweck und den Umfang dieses Artikels verwendet werden.
Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt "Eigenschaften" aufgeführt sind.
Informationsquellen

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 3120595 – Letzte Überarbeitung: 05/31/2016 09:07:00 – Revision: 13.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 KbMtde
Feedback