Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Příznaky

Předpokládejme, že jste do tabulky přidali sloupec v Microsoft SQL serveru 2012 nebo SQL Server 2014. Když je velikost řádku blízko maximální povolené velikosti 8 060 bajtů, může operace přidání trvat dlouho.

Příčina

K tomuto problému dochází, protože pokud je celková velikost řádku blízko maximální povolené velikosti řádku, provede SQL Server úplnou kontrolu tabulky, aby se ujistil, že přidání nového sloupce neruší integritu dat. Verze před serverem SQL Server 2012 tuto kontrolu nedělají a že jazyk DDL (Data Definition Language) běží rychleji. Výsledkem tohoto chování však je selhání následujících operací, jako je aktualizace řádku nebo zmenšení, pokud velikost řádku přesáhne povolenou velikost.

Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:

Další informace

  • Příznak Trace 647 můžete zapnout pomocí parametru Startup (spuštění). Informace najdete v tématu Možnosti spuštění služby databázový stroj.

  • Můžete spustit následující dotaz (nahraďte <název tabulky> skutečným názvem tabulky), abyste otestovali určitou tabulku před operací ve výrobním systému a naplánujete účinek tohoto problému. Pokud je výsledek větší než 8 060, bude tabulka podléhat tomuto problému. Pokud jste sloupec zanechali, musíte změnit tabulku pomocí možnosti nového sestavení. Při opětovném vytvoření tabulky může dotaz vrátit správné výsledky.

    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 
  • Když aplikace často přidá do tabulky nové sloupce, můžete přidat sloupce variabilní délky nebo zhuštěné sloupce. Jedná se o operaci s metadaty, i když celková velikost všech sloupců přesahuje 8 060 bajtů.

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.