Oprava: Sloupec dat mohou být odstraněny při aktualizaci jiné proměnné délky sloupce v tabulce databáze upgradu ze serveru SQL Server 2005

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 3120595
Příznaky
Při aktualizaci hodnoty v proměnné délky sloupce v tabulce databáze, který byl inovován z Microsoft SQL Server 2005 je odstraněna data v jiné proměnné délky sloupce ve stejném řádku.

K tomuto problému dochází v 2014 Microsoft SQL Server a Microsoft SQL Server 2012. Následující scénář může vystavit databáze s tímto problémem. Tento seznam představuje posloupnost událostí:

  • Databáze je vytvořen v SQL Server 2005.
  • V SQL Server 2005 změnit tabulky a přetáhněte jeden nebo více sloupců proměnné délky na konci definici tabulky.
  • Můžete přidávat nové proměnné délky sloupce, které mají podobné datový typ a délka sloupce vyřazených.
  • Tato databáze upgradována ze serveru SQL Server 2005 SQL Server 2014 nebo SQL Server 2012.
  • Později aktualizovat hodnotu jiného sloupce proměnné délky a aktualizovaná data má přetečení na novou stránku.
V tomto scénáři může odstranit data v jednom nebo více nově přidané sloupce ve stejném řádku.

Můžete použít skript v Další informace části ověřte následující skutečnosti:

  • Zda odstranil všechny tabulky v databázi dané proměnné délky sloupce
  • Tom, zda další proměnné délky sloupce byly vytvořeny s odpovídající posuny.
Poznámka: Tento problém není objeveny DBCC CHECKDB.
Řešení
Poznámka: Tato oprava zabraňuje pouze budoucí výskyty problému.

Důležité: Pokud upgradujete ze serveru SQL Server 2005 databáze SQL Server 2014 nebo SQL Server 2012, ujistěte se, naleznete v části "Řešení".

Tento problém byl poprvé opraven v následující kumulativní aktualizaci pro SQL Server:

Jedná se o nejnovější kumulativní aktualizace pro verze těchto programů.

Doporučení: Nainstalujte nejnovější kumulativní aktualizaci pro SQL Server 2014 nebo SQL Server 2012

Nainstalujte každý nový kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly obsaženy v předchozí kumulativní aktualizace. Rezervovat nejnovější kumulativní aktualizace pro SQL Server:



Poznámka: Další informace o nejnovější sestavení serveru SQL Server naleznete v tématu Kde lze najít informace o nejnovější SQL Server vytvoří.
Jak potíže obejít
Důležité: Toto řešení použijte při upgradu databáze ze serveru SQL Server 2005 SQL Server 2014 nebo SQL Server 2012 a dříve, než je nechat v upgradované databázi spustit příkazy aktualizace.

Chcete-li tento problém vyřešit, pokud přetažení sloupců v tabulce, přesvědčte se, zda provedete některou z následujících akcí před aktualizaci nebo odstranění řádků:

  • Znovu vytvořit seskupený index pomocí ALTER INDEX (...) ZNOVU
  • Znovu vytvořit haldu pomocí příkazu ALTER TABLE (...) ZNOVU

Další informace
Chcete-li ověřit, zda odstranění všech tabulek v databázi daného sloupce, které jsou potenciálně ovlivněny tento problém můžete použít následující skript.

Poznámka: Pokud skript nevrátí žádné řádky, to znamená, že tento problém nevztahuje právě s tabulkou ve vašem systému.
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];

Důležité: Tento skript by měl sloužit pouze pro účel a oblast působnosti tohoto článku.
Prohlášení
Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 3120595 - Poslední kontrola: 05/31/2016 09:08:00 - Revize: 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 KbMtcs
Váš názor