Udostępnij za pośrednictwem


Row-Overflow Data Exceeding 8 KB

Tabela może zawierać maksymalnie 8,060 bajtów w wierszu.W SQL Server 2008, to ograniczenie jest złagodzone dla tabel, które zawierają varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumn. Długość każdej z tych kolumn nadal muszą mieścić się w granicach 8000 bajtów; jednak ich szerokości Scalonej może przekroczyć limit 8,060 bajtów.Dotyczy to varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumn, gdy są one utworzony i zmodyfikowany, a także gdy danych jest aktualizowany lub umieszczany.

Uwaga

To ograniczenie nie stosuje się do varchar(max), nvarchar(max), varbinary(max), ntext, text, image, lub xml kolumny. Aby uzyskać więcej informacji na temat przechowywania tych kolumn zobacz Using Large-Value Data Types, Using text and image Data, a Korzystanie z danych XML.

Uwagi dotyczące przepełnienia wiersza

Podczas łączenia varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumny, które przekraczają 8,060 bajtów w wierszu, należy uwzględnić następujące zagadnienia:

  • Przekroczenie limitu rozmiaru wiersza bajt 8,060 mogą mieć wpływ na wydajność ponieważ SQL Server wciąż utrzymuje limit 8 KB na jednej stronie. Po połączeniu z varchar, nvarchar, varbinary, sql_variant, lub zdefiniowany przez użytkownika typ danych CLR kolumn przekracza ten limit SQL Server Database Engine Przeniesienie kolumna rekord z największą szerokość do innej strona w ROW_OVERFLOW_DATA jednostka alokacji, zachowując 24-bajtowy wskaźnik na oryginalnej stronie. Przenoszenie dużych rekordy do innej strona występuje dynamicznie, jak rekordy są dłużej w zależności od operacji aktualizacji.Skróć rekordów operacje aktualizacji może spowodować, że rekordów ma być przeniesiony z powrotem do oryginalnej strona w jednostce alokacji IN_ROW_DATA.Ponadto kwerend i wykonywania innych wybierz operacje, takie jak sortuje lub sprzężenia w dużych rekordy, które zawierają wiersze danych przekraczające rozmiar strony zmniejsza czas przetwarzania, ponieważ zapisy te są przetwarzane synchronicznie, zamiast asynchronicznie.

    Dlatego też podczas projektowania tabela z wieloma varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumn, należy wziąć pod uwagę procent wierszy, które mogą przepływ — za pośrednictwem i częstotliwość, z którą jest prawdopodobnie można zbadać przepełnienie danych.Jeśli mogą zostać częste kwerendy dla wielu wierszy wiersze danych przekraczające rozmiar strony, należy wziąć pod uwagę normalizowanie tabela tak, aby niektóre kolumny są przenoszone do innej tabela.To może następnie być kierowane kwerendy w asynchronicznej operacji łączyć.

  • Długości poszczególnych kolumn nadal muszą mieścić się w granicach 8000 bajtów varchar, nvarchar, varbinary, sql_variant, a kolumn zdefiniowanych przez użytkownika typu CLR. Ich Scalonej długości może przekroczyć limit bajt 8,060 wiersza tabela.

  • Suma inne dane wpisz kolumnach, w tym char i nchar dane muszą mieścić się w limit wierszy 8,060 bajtów. Dane dużego obiektu również jest wykluczony ze limit wierszy 8,060 bajtów.

  • Nie może zawierać klucz indeks klastrowany indeksu varchar kolumny zawierające dane istniejące w jednostce alokacji ROW_OVERFLOW_DATA. Jeżeli indeks klastrowany jest tworzony w varchar istniejące dane i kolumn znajduje się w jednostce alokacji IN_ROW_DATA, wstawianie kolejnych lub aktualizacja akcji kolumna, która będzie wypychanie poza wiersza danych nie powiedzie się. Aby uzyskać więcej informacji na temat jednostek alokacji zobacz Organizacja indeksu i tabela.

  • Można dołączyć kolumny zawierające dane przepełnienie wiersza jako klucz lub nonkey kolumn indeks nieklastrowany.

  • Limit rozmiaru rekordu dla tabel używających rozrzedzone kolumn jest 8,018 bajtów.Przekonwertowane danych oraz istniejących rekordów danych przekracza 8,018 bajtów, zwracana jest MSSQLSERVER błąd 576.Gdy kolumny są konwertowane między typami rzadkie i nonsparse, Database Engine przechowuje kopię danych bieżącego rekordu. To tymczasowo podwaja się pamięci masowej, która jest wymagana dla wybranego rekordu.

  • Aby uzyskać informacje dotyczące tabel lub indeksy, które mogą zawierać wiersze danych przekraczające rozmiar strony, należy użyć sys.dm_db_index_physical_stats funkcja dynamicznego zarządzania.