sp_tableoption (Transact-SQL)

Sets option values for user-defined tables.sp_tableoption can be used to control the in-row behavior of tables with varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, image, or large user-defined type columns.

Important noteImportant Note:

Tekst w wierszu funkcja zostanie usunięta w przyszłej wersja programu SQL Server. Aby zapisać dane dużą wartość, zaleca się korzystanie z varchar(max), nvarchar(max) i varbinary(max) typy danych.

Topic link iconKonwencje składni języka Transact-SQL

sp_tableoption [ @TableNamePattern = ] 'table' 
          , [ @OptionName = ] 'option_name' 
          ,[ @OptionValue =] 'value'

Argumenty

  • [ @TableNamePattern =] 'table'
    To nazwa kwalifikowana lub nonqualified tabela bazy danych zdefiniowanych przez użytkownika.Nazwę tabela w pełni kwalifikowana znajduje się w tym nazwę bazy danych, nazwa bazy danych musi być nazwą bieżącej bazy danych.Table options for multiple tables can not be set at the same time.table is nvarchar(776), with no default.

  • [@ OptionName =] ' option_name"
    Is a table option name.option_name is varchar(35), with no default of NULL.option_name can be one of the following values.

    Wartość

    Description

    Blokada tabela ładowanie zbiorcze

    Gdy funkcja ta jest wyłączona (wartość domyślna), powoduje procesu ładowanie zbiorcze tabel zdefiniowanych przez użytkownika uzyskać blokad wiersza.Po włączeniu powoduje procesów ładowanie zbiorcze tabel zdefiniowanych przez użytkownika uzyskać blokada aktualizacji zbiorczej.

    Wstawianie wiersza blokada

    Nie są obsługiwane w SQL Server 2008.

    Strategię blokowania SQL Server wiersz blokowania z możliwych podwyższony do strona lub blokowanie tabela. Ta opcja nie wpływa na zachowanie blokowania SQL Server i jest włączone tylko w celu zachowania zgodności z istniejącymi skryptami i procedur.

    tekst w wierszu

    Kiedy OFF lub 0 (wyłączony, wartość domyślna), bieżące zachowanie nie ulega zmianie i nie ma obiektu BLOB w wierszu.

    Po określeniu i @ OptionValue jest włączone (włączone) lub wartość całkowitą od 24 do 7000 nowego text, ntext, lub image ciągi znaków są przechowywane bezpośrednio w wierszu danych. Wszystkie istniejące wartości BLOB (duży obiekt binarny: text, ntext, lub image dane) zostanie zmieniona na tekst w formacie wiersza po zaktualizowaniu wartości BLOB. Aby uzyskać więcej informacji zobacz Spostrzeżenia.

    typy dużą wartość z wiersza

    1 = varchar(max), nvarchar(max), varbinary(max), xml i dużych typ zdefiniowany przez użytkownika (UDT) kolumn w tabela są przechowywane z wierszy z 16-bajtowy wskaźnik do katalogu głównego.

    0 = varchar(max), nvarchar(max), varbinary(max), xml i duże wartości UDT są przechowywane bezpośrednio w wierszu danych, aż do maksymalnie 8000 bajtów i tak długo, jak wartość może dopasowanie w rekordzie. Jeśli wartość nie mieści się w rekordzie, wskaźnik jest przechowywana w wierszu, a pozostałe są przechowywane z wierszy w miejsce przechowywania LOB.0 jest wartością domyślną.

    format przechowywania vardecimal

    Kiedy właściwość ma wartość PRAWDA, ON lub 1, wyznaczonych tabela jest włączona dla formatu magazynu vardecimal.Gdy ma wartość FAŁSZ, OFF, lub 0, w tabela nie jest włączona dla formatu magazynu vardecimal.Format przechowywania Vardecimal mogą być włączone tylko wtedy, gdy bazy danych został włączony dla formatu magazynu vardecimal przy użyciu sp_db_vardecimal_storage_format.Aby uzyskać informacje o formacie przechowywania vardecimal zobacz Przechowywanie danych dziesiętny jako zmienna długość. This option requires SQL Server 2005 Service Pack 2.Vardecimal storage format is available only in SQL Server Enterprise, Developer, and Evaluation editions.W SQL Server 2008 a później, włączone dla wszystkich baz danych użytkowników vardecimal format przechowywania. W SQL Server 2008 i jego nowszych wersji vardecimal format przechowywania została zaniechana. Użyj kompresji wiersz.Aby uzyskać więcej informacji zobaczCreating Compressed Tables and Indexes.0 jest wartością domyślną.

  • [ @OptionValue =] 'value'
    Is whether the option_name is enabled (TRUE, ON, or 1) or disabled (FALSE, OFF, or 0).value is varchar(12), with no default.value is case insensitive.

    Dla tekstu w opcji wiersza opcji prawidłowe wartości to 0 ON, OFF, lub liczbą całkowitą z zakresu od 24 do 7000.Kiedy value jest ON, ustawienia domyślne ograniczenie do 256 bajtów.

Wartości kodów powrotnych

0 (sukces) lub numer błędu (błąd)

Remarks

sp_tableoption można używać tylko do ustawiania wartości opcji dla tabel zdefiniowanych przez użytkownika.Aby wyświetlić właściwości tabela, należy użyć OBJECTPROPERTY.

Tekst w wierszu opcji sp_tableoption może być włączona lub wyłączona tylko dla tabel, które zawierają tekst kolumny.Jeśli w tabela nie ma kolumn tekstu SQL Server zgłasza błąd.

Po włączeniu tekstu w opcji wiersza parametr @ OptionValue umożliwia użytkownikom określanie maksymalnego rozmiaru, które mają być przechowywane w wierszu dla BLOB.Wartość domyślna to 256 bajtów, ale wartości mogą obejmować zakres od 24 do 7000 bajtów.

text, ntext, lub image ciągi znaków są przechowywane w wiersz danych, jeśli mają zastosowanie następujące warunki:

  • tekst w wierszu jest włączona.

  • Długość ciąg jest krótszy niż limit określony w @ OptionValue

  • Brak wystarczającej ilości miejsca w wierszu danych.

When BLOB strings are stored in the data row, reading and writing the text, ntext, or image strings can be as fast as reading or writing character and binary strings.SQL Server does not have to access separate pages to read or write the BLOB string.

Jeśli text, ntext, lub image ciąg jest większy niż określony limit lub ilość wolnego miejsca, w wierszu, wskaźniki są przechowywane w wierszu w zamian. Niemniej jednak mają zastosowanie warunki do przechowywania ciągów BLOB w wierszu: Wiersz danych do przechowywania wskaźników musi być wystarczająca ilość miejsca.

BLOB strings and pointers stored in the row of a table are treated similarly to variable-length strings.SQL Server uses only the number of bytes required to store the string or the pointer.

Istniejące wartości BLOB ciągów znaków nie są konwertowane natychmiast, gdy włączone jest pierwszy tekst w wierszu.Ciągi są konwertowane tylko wtedy, gdy są one aktualizowane.Podobnie, gdy tekst w wierszu opcję limit zwiększa się, text, ntext, lub image ciągi już w wierszu danych nie będzie konwertowany do przestrzegania nowy limit czas zostaną zaktualizowane.

Uwaga

Tekst w wierszu opcji wyłączania lub zmniejszenia limitu opcji wymaga konwersji wszystkich bloków BLOB, w związku z tym, proces może być długi, w zależności od liczby ciągów BLOB, które muszą zostać przekonwertowane.Tabela jest zablokowana podczas procesu konwersji.

Zmiennej Tabela, włączając funkcja zwracającą wartość zmiennej tabeli ma automatycznie tekst z wbudowanej domyślny limit 256 włączoną opcję wiersza.Nie można zmienić tej opcji.

tekst w wierszu obsługuje funkcje TEXTPTR WRITETEXT, UPDATETEXT i READTEXT.Użytkownicy mogą czytać części BLOB z funkcją SUBSTRING(), ale należy pamiętać, że tekst w wierszu wskaźniki są inny czas trwania i liczby ograniczeń z innymi wskaźnikami tekstu.Aby uzyskać więcej informacji zobaczZarządzanie ntext, tekst i obraz danych.

Aby zmienić tabela z formatu magazynu vardecimal do formatu normalnej dziesiętną magazynu, w bazie danych musi być w trybie odzyskiwanie SIMPLE.Zmiana trybu odzyskiwanie zostaną przerwane w łańcuchu dziennika do tworzenia i odtwarzania kopii zapasowych, więc wykonać pełną kopię zapasową bazy danych należy tworzyć po usunięciu formatu magazynu vardecimal z tabela.

Uprawnienia

Aby wykonać sp_tableoption wymaga uprawnienia ALTER w tabela.

Przykłady

A.Przechowywanie danych xml z wiersza

W poniższym przykładzie określa, że xml dane w HumanResources.JobCandidate Tabela jest przechowywana z wiersza.

USE AdventureWorks;
GO
EXEC sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;

B.Włączanie vardecimal format przechowywania w tabela

The following example modifies the Production.WorkOrderRouting table to store the decimal data type in the vardecimalstorage format.

USE master;
GO
-- The database must be enabled for vardecimal storage format
-- before a table can be enabled for vardecimal storage format
EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON';
GO
USE AdventureWorks;
GO
EXEC sp_tableoption 'Production.WorkOrderRouting', 
   'vardecimal storage format', 'ON';