Przepełnienie wiersz danych powyżej 8 KB

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

Ostrzeżenie

Ograniczenie to nie ma zastosowania do varchar(max), nvarchar(max), varbinary(max), text, image, lub xml kolumny.Aby uzyskać więcej informacji o magazynie tych kolumn, zobacz Duża wartość typów danych, Tekst i obraz danych, i Używanie danych XML.

Uwagi dotyczące wiersza przepełnienia

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

  • Przekroczenie limitu rozmiaru wiersza 8,060 bajt mogą obniżać wydajność, ponieważ SQL Server nadal utrzymuje limit 8 KB strona.Po połączeniu z varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumn przekracza ten limit, Aparat baz danych programu SQL Server Przenosi kolumna rekord z największą szerokość do innej strona w jednostce alokacji ROW_OVERFLOW_DATA, zachowując 24-bajtowy wskaźnik na oryginalnej stronie.Przenoszenie dużych rekordy do innej strona występuje dynamicznie rekordy są przedłuży oparte na operacje aktualizacji.Skróć rekordy operacje aktualizacji może spowodować, że rekordy, które mają być przeniesiony z powrotem do oryginalnej strona w IN_ROW_DATA jednostka alokacji.Ponadto kwerend i wykonywanie innych wybierz operacje, takie jak sortuje lub sprzężenia na dużych rekordy zawierające wiersze danych przekraczające rozmiar strony spowalnia czas przetwarzania, ponieważ te rekordy są przetwarzane synchronicznie, zamiast asynchronicznie.

    Dlatego podczas projektowania tabela z wieloma varchar, nvarchar, varbinary, sql_variant, lub CLR typ zdefiniowany przez użytkownika kolumny, należy rozważyć procent wierszy, które prawdopodobnie przepływ przez i częstotliwość, z jaką dane przepełnienie prawdopodobnie można zbadać.Jeśli istnieją prawdopodobnie częste kwerendy na wiele wierszy z wiersze danych przekraczające rozmiar strony, należy rozważyć normalizowanie tabela tak, aby niektóre kolumny są przenoszone do innej tabela.Następnie, to mogą być wyszukiwane w asynchronicznej operacji JOIN.

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

  • Suma innych danych wpisz kolumn, w tym char i nchar danych, muszą mieścić się w limit wierszy bajt 8,060.Dużego obiektu danych jest również zwolniony z limit wierszy bajt 8,060.

  • Klucz indeks klastrowany indeksu nie może zawierać varchar kolumny zawierające dane istniejące w ROW_OVERFLOW_DATA jednostka alokacji.Jeżeli indeks klastrowany zostanie utworzony na varchar kolumna oraz istniejących danych jest jednostka alokacji, kolejnych insert lub update actions kolumna, która będzie IN_ROW_DATA wypychanie off wiersza danych spowoduje niepowodzenie.Aby uzyskać więcej informacji na temat jednostek alokacji, zobacz Organizacji indeksu i tabeli.

  • Można dołączyć kolumny, które zawierają wiersze danych przekraczające rozmiar strony jako klucz lub kolumnami indeks nieklastrowany.

  • Limit rozmiaru rekordu dla tabel używających sparse kolumny jest 8,018 bajtów.Przekonwertowane dane plus istniejących rekordów danych przekracza 8,018 bajtów, zwracana jest MSSQLSERVER błąd 576.Podczas konwertowania kolumn między typami sparse i nonsparse Aparat baz danych przechowuje kopię bieżącej danych rekordu.To tymczasowo podwaja składowania wymaganego dla rekordu..

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

Zobacz także

Koncepcje