Udostępnij za pośrednictwem


sp_tableoption (języka Transact-SQL)

Zestawy opcji wartości dla tabel zdefiniowanych przez użytkownika.sp_tableoptionSłuży do sterowania zachowaniem w wierszu tabel z varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, image, lub dużych typ zdefiniowany przez użytkownika kolumny.

Ważna informacjaWażne:

Tekstu w wierszu funkcja zostanie usunięta w przyszłej wersja programu SQL Server.Aby przechowywać dane dużą wartość, zaleca się korzystania z varchar(max), nvarchar(max) i varbinary(max) typów danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • [ @ TableNamePattern =] 'table"
    To nazwa kwalifikowana lub nonqualified przez użytkownika bazy danych tabela.Jeśli podano nazwę tabela w pełni kwalifikowana nazwa bazy danych, w tym nazwa bazy danych musi być nazwą bieżącej bazy danych.Opcje tabeli dla wielu tabel nie można zestaw w tym samym czas.tablejest nvarchar(776), z braku domyślne.

  • [ @ OptionName = ] 'option_name"
    Jest nazwą opcję tabela .option_namejest varchar(35), z Brak domyślnej NULL.option_namemoże to być jedna z następujących wartości.

    Wartość

    Opis

    tabela blokada ładowanie zbiorcze

    Gdy wyłączone (domyślnie), powoduje proces ładowanie zbiorcze zdefiniowane przez użytkownika tabel do uzyskania blokady wiersza.Po włączeniu powoduje procesów ładowanie zbiorcze na zdefiniowanej przez użytkownika tabel do uzyskania aktualizacji zbiorczej blokada.

    Wstaw wiersz blokada

    Nieobsługiwane w SQL Server 2008.

    Strategię blokowania SQL Server jest wiersz jest blokowanie możliwości wspierania do strona lub blokadę tabela .Ta opcja nie ma wpływu na zachowanie blokowania SQL Server i jest dołączony tylko dla zapewnienia zgodności istniejących skryptów i procedur.

    tekst w wierszu

    Kiedy jest WYŁĄCZONY lub 0 (wyłączone, wartość domyślna), nie zmienia bieżące zachowanie i w wierszu nie ma żadnego obiektu BLOB.

    Po określeniu i @ optionvalue jest ON (włączone) lub wartość całkowitą od 24 do 7000 nowy text, ntext, lub image ciągi znaków są przechowywane bezpośrednio w wierszu danych.Wszystkich istniejących BLOB (duży obiekt binarny: textntext, lub image danych) zostanie zmieniona na tekstu w wierszu formatowania podczas aktualizacji 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, do limitu 8000 bajtów i tak długo, jak wartość można dopasowanie do rekordu.Jeśli wartość nie dopasowanie w rekordzie, wskaźnik jest przechowywana w wierszu, a reszta jest przechowywany poza wiersz miejsca LOB.0 jest wartość domyślna.

    format przechowywania vardecimal

    Gdy ma wartość TRUE, na, lub 1, wyznaczonych tabela jest włączona dla vardecimal format przechowywania.Gdy ma wartość FAŁSZ, wyłączanie, lub 0, tabela nie jest włączona dla formatu magazynu vardecimal.Format przechowywania Vardecimal mogą być włączone tylko wtedy, gdy baza danych została włączona dla formatu magazynu vardecimal za pomocą sp_db_vardecimal_storage_format.Informacje dotyczące formatu magazynu vardecimal, zobacz Przechowywanie danych dziesiętne jako o zmiennej długości.Ta opcja wymaga SQL Server 2005 dodatku Service Pack 2.Vardecimalformat przechowywania jest dostępna tylko w SQL Server wersji Enterprise, Developer i oceny.W SQL Server 2008 i później, wszystkich baz danych użytkowników są włączone dla vardecimal format magazynu.W SQL Server 2008 i nowszych, vardecimal format przechowywania jest niezalecane.Zamiast tego użyj kompresji wierszy.Aby uzyskać więcej informacji, zobacz Tworzenie skompresowanego tabel i indeksów.0 jest wartość domyślna.

  • [ @ OptionValue =] 'value"
    Jest czy option_name jest włączony (wartość TRUE, na lub 1) lub wyłączony (FALSE, wyłączanie, lub 0).valuejest varchar(12), z braku domyślne.valueprzypadek jest wielkość liter.

    Dla tekstu w wierszu opcji, opcja prawidłowe wartości 0, są na OFF lub całkowitą od 24 do 7000.Gdy value jest włączone, domyślne ograniczenie do 256 bajtów.

Wartości kodów powrotnych

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

Uwagi

sp_tableoptionmoże służyć tylko do wartości opcji zestaw dla tabel zdefiniowanych przez użytkownika.Aby wyświetlić właściwości tabela , należy użyć OBJECTPROPERTY.

Tekstu w wierszu opcji w sp_tableoption można włączać lub wyłączać tylko dla tabel, które zawierają tekst kolumny.Jeśli tabela nie ma tekstu kolumna SQL Server podnosi błąd.

Gdy tekstu w wierszu opcja jest włączona, @ optionvalue parametr umożliwia użytkownikom określenie maksymalnego rozmiaru obiektu BLOB przechowywana w wierszu.Wartość domyślna to 256 bajtów, ale wartości można zakres od 24 do 7000 bajtów.

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

  • tekst w wierszu jest włączone.

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

  • Dostępne w wierszu danych jest za mało miejsca.

Kiedy obiekt BLOB ciągi są przechowywane w wierszu danych, Odczyt i zapis text, ntext, lub image ciągów może być wolniejsze od odczytu lub zapisu znaków i ciągów binarnych.SQL Servernie ma dostępu do oddzielnych stron do odczytu lub zapisu obiektu BLOB ciąg.

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

Ciągi obiektu BLOB i przechowywane w wierszu tabela wskaźniki traktuje się podobnie do ciągów o zmiennej długości.SQL Serverużywa tylko liczba bajtów potrzebnych do przechowania ciąg lub wskaźnik.

Istniejący obiekt BLOB ciągi nie są konwertowane natychmiast po tekstu w wierszu najpierw jest włączona.Ciągi są konwertowane tylko wtedy, gdy są one aktualizowane.Podobnie, gdy tekstu w wierszu opcji limit jest zwiększony, text, ntext, lub image ciągów już w wierszu danych nie będzie konwertowany do przestrzegania nowy limit czas są aktualizowane.

Ostrzeżenie

Wyłączanie tekstu w wierszu opcji lub zmniejszenia limitu opcja wymaga konwersji wszystkich bloków BLOB; Dlatego też proces może być długie, w zależności od liczby ciągów BLOB, które muszą zostać przekonwertowane.tabela jest zablokowana w procesie konwersji.

Zmienna tabela , włączając w to funkcja , która zwraca wartość zmiennej tabela automatycznie ma tekstu w wierszu z wbudowanej domyślny limit 256 włączoną opcję.Nie można zmienić tej opcji.

tekst w wierszu obsługuje funkcje TEXTPTR, WRITETEXT, UPDATETEXT i READTEXT.Użytkownicy mogą odczytywać części obiektu BLOB SUBSTRING() funkcja, ale należy pamiętać, że wskaźniki w wiersz tekstu są inny czas trwania i liczby ograniczeń z innych wskaźników tekstu.Aby uzyskać więcej informacji, zobacz Zarządzanie ntext, tekst i obraz danych.

Aby zmienić tabela z formatu magazynu vardecimal format normalnej magazynu dziesiętny, baza danych musi być w trybie proste odzyskiwanie .Zmiana trybu odzyskiwanie spowoduje przerwanie łańcuch dzienników do kopia zapasowa zapasowych, dlatego należy utworzyć pełnej kopia zapasowa po usunięciu formatu magazynu vardecimal z tabela.

Uprawnienia

Aby wykonać sp_tableoption wymaga zmiany uprawnień dla tabela.

Przykłady

A.Przechowywanie danych xml z wiersza

W następującym przykładzie określono, że xml danych w HumanResources.JobCandidate tabela należy przechowywać poza wiersz.

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

B.Włączanie vardecimal format przechowywania w tabela

Poniższy przykład modyfikuje Production.WorkOrderRouting tabela do przechowywania decimal Typ danych w 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 'AdventureWorks2008R2', 'ON';
GO
USE AdventureWorks2008R2;
GO
EXEC sp_tableoption 'Production.WorkOrderRouting', 
   'vardecimal storage format', 'ON';