Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Ustawia wartości opcji dla tabel definiowanych przez użytkownika.
sp_tableoption Można je wykorzystać do sterowania zachowaniem tabel w wierszach za pomocą kolumn Varchar(max),Nvarchar(max),Varbinary(max), XML, Text, NText, Image lub dużych kolumn typów definiowanych przez użytkownika.
Ważne
Funkcja tekstu w wierszu zostanie usunięta w przyszłej wersji SQL Server. Aby przechowywać dane o dużej wartości, zalecamy korzystanie z typów danych varchar(max),nvarchar(max) i varbinary(max ).
Transact-SQL konwencje składni
Składnia
sp_tableoption
[ @TableNamePattern = ] N'TableNamePattern'
, [ @OptionName = ] 'OptionName'
, [ @OptionValue = ] 'OptionValue'
[ ; ]
Arguments
[ @TableNamePattern = ] N'TableNamePattern'
Kwalifikowana lub niekwalifikowana nazwa tabeli bazy danych zdefiniowanej przez użytkownika. @TableNamePattern to nvarchar(776), bez domyślnego zachowania. Jeśli podana jest w pełni kwalifikowana nazwa tabeli, w tym nazwa bazy danych, nazwa bazy musi być nazwą bieżącej bazy danych. Opcji tabeli dla wielu tabel nie można ustawić jednocześnie.
[ @OptionName = ] 'OptionName'
Nazwa opcji tabeli. @OptionName to varchar(35) i może być jedną z następujących wartości.
| Wartość | Description |
|---|---|
table lock on bulk load |
Po wyłączeniu (domyślnie) proces masowego ładowania tabel definiowanych przez użytkownika otrzymuje blokady wierszy. Po włączeniu powoduje to uzyskiwanie blokady masowej aktualizacji przez procesy zdefiniowanych przez użytkownika tabel. |
insert row lock |
Nieobsługiwane. Ta opcja nie wpływa na zachowanie blokowania SQL Server i jest uwzględniona jedynie ze względu na kompatybilność istniejących skryptów i procedur. |
text in row |
Gdy OFF lub ( 0 wyłączone, domyślne), nie zmienia się aktualne zachowanie i nie ma BLOB-u w rzędzie.Gdy jest określone i @OptionValue jest ON (włączone) lub wartość całkowita od 24 do , 7000nowe ciągi tekstowe, ntext lub obrazowe są przechowywane bezpośrednio w wierszu danych. Wszystkie istniejące dane BLOB (binarny duży obiekt: tekst, ntext lub obraz) są zmieniane na tekst w formacie wierszowym po aktualizacji wartości BLOB. Aby uzyskać więcej informacji zobacz uwagi. |
large value types out of row |
1 = varchar(max),nvarchar(max), varbinary(max),xml oraz duże kolumny typów definiowanych przez użytkownika (UDT) w tabeli są przechowywane poza wierszem, z 16-bajtowym wskaźnikiem do korzenia. 0 = varchar(max), nvarchar(max), varbinary(max), xml oraz duże wartości UDT są przechowywane bezpośrednio w wierszu danych, do limitu 8 000 bajtów i tak długo, jak wartość zmieści się w rekordzie. Jeśli wartość nie mieści się w rekordzie, wskaźnik jest przechowywany w wierszu, a reszta poza wierszem w przestrzeni pamięci LOB. 0 to wartość domyślna. Duży typ definiowany przez użytkownika (UDT) dotyczy do: SQL Server 2008 (10.0.x) i nowszych. Użyj TEXTIMAGE_ON opcji CREATE TABLE , aby określić lokalizację przechowywania dużych typów danych. |
| Format pamięci wardecymalnej |
Dotyczy: SQL Server 2008 (10.0.x) i nowszych. Gdy TRUE, ON, lub 1, wyznaczona tabela jest włączona dla formatu pamięci desętnej . Gdy FALSE, OFF, lub 0, tabela nie jest włączona dla formatu pamięci desętnej . Format pamięci desętnej można włączyć tylko wtedy, gdy baza danych jest włączona dla formatu pamięci wardziesiętnej za pomocą sp_db_vardecimal_storage_format. W SQL Server 2008 (10.0.x) i późniejszych format pamięci desętnej został wycofany. Zamiast tego użyj ROW kompresji. Aby uzyskać więcej informacji, zobacz Kompresja danych. 0 to wartość domyślna. |
[ @OptionValue = ] 'Wartość opcji'
Określa, czy @OptionName jest włączony (TRUE, ON, lub 1) czy wyłączony (FALSE, OFF, lub 0).
@OptionValue to varchar(12), bez domyślnego terminu.
@OptionValue jest nierozróżniające wielka litera.
Dla opcji tekstu w wierszu poprawne wartości opcji to 0, ON, OFF, lub liczba całkowita od do 24 .7000 Gdy @OptionValue jest , ONlimit domyślnie wynosi 256 bajtów.
Zwracanie wartości kodu
0 (sukces) lub numer błędu (niepowodzenie).
Uwagi
sp_tableoption może być używany tylko do ustawiania wartości opcji dla tabel definiowanych przez użytkownika. Aby wyświetlić właściwości tabeli, użyj OBJECTPROPERTY lub zapytania sys.tables.
Opcja tekst w wierszu w może sp_tableoption być włączona lub wyłączona tylko w tabelach zawierających kolumny tekstowe. Jeśli tabela nie ma kolumny tekstowej, SQL Server wyświetla błąd.
Gdy opcja tekst w wierszu jest włączona, parametr @OptionValue pozwala użytkownikom określić maksymalny rozmiar do przechowywania w wierszu dla BLOB-a. Domyślnie to 256 bajtów, ale wartości mogą wahać się od 24 do 7000 bajtów.
Tekst, ntext lub ciąg obrazów są przechowywane w wierszu danych, jeśli spełnione są następujące warunki:
- Tekst w wierszu jest włączony.
- Długość struny jest krótsza niż limit określony w @OptionValue.
- W wierszu danych jest wystarczająco dużo miejsca.
Gdy łańcuchy BLOB są przechowywane w wierszu danych, odczyt i zapis tekstu, ntextu lub obrazów może być tak szybki, jak odczyt lub zapis znaków i ciągów binarnych. SQL Server nie musi uzyskiwać dostępu do oddzielnych stron, aby czytać lub zapisywać ciąg BLOB.
Jeśli tekst, ntext lub ciąg obrazów jest większy niż określony limit lub dostępna przestrzeń w wierszu, wskaźniki są przechowywane w tym wierszu. Warunki przechowywania ciągów BLOB w wierszu nadal obowiązują: w wierszu danych musi być wystarczająco dużo miejsca, aby pomieścić wskaźniki.
Łańcuchy i wskaźniki BLOB przechowywane w wierszu tabeli traktowane są podobnie jak ciągi o zmiennej długości. SQL Server używa tylko tyle bajtów potrzebnych do przechowywania ciągu lub wskaźnika.
Istniejące ciągi BLOB nie są od razu konwertowane po pierwszym włączeniu tekstu w wierszu. Ciągi są konwertowane tylko po ich aktualizacji. Podobnie, gdy limit opcji tekst w wierszu zostanie zwiększony , tekst,ntext lub obrazy już znajdujące się w wierszu danych nie są konwertowane do nowego limitu aż do momentu ich aktualizacji.
Uwaga / Notatka
Wyłączenie opcji tekstu w wierszu lub zmniejszenie limitu opcji wymaga konwersji wszystkich BLOB-ów; dlatego proces może być długi, w zależności od liczby ciągów BLOB, które trzeba przekonwertować. Stół jest zamykany podczas procesu konwersji.
Zmienna tabelowa, w tym funkcja zwracająca zmienną tabelową, automatycznie ma włączoną opcję tekst w wierszu z domyślnym limitem inline 256. Tej opcji nie da się zmienić.
Opcja tekst w wierszu obsługuje funkcje TEXTPTR, WRITETEXT, UPDATETEXT oraz READTEXT. Użytkownicy mogą odczytywać fragmenty BLOB-u za pomocą funkcji SUBSTRING(), ale muszą pamiętać, że wskaźniki tekstowe w wierszu mają inne limity czasu trwania i liczby niż inne wskaźniki tekstowe.
Aby zmienić tabelę z formatu pamięci desętnej z powrotem na normalny format dziesiętny, baza danych musi być w modelu odzyskiwania SIMPLE. Zmiana modelu odzyskiwania przerwie łańcuch logów na potrzeby backupu, dlatego po usunięciu formatu pamięci wardecymalnej z tabeli powinieneś utworzyć pełną kopię zapasową bazy danych.
Jeśli konwertujesz istniejącą kolumnę typu danych LOB (tekst, ntext lub obraz) na małe do średnie duże typy wartości (varchar(max),nvarchar(max) lub varbinary(max)), a większość instrukcji nie odnosi się do kolumn typu dużych wartości w twoim środowisku, rozważ zmianę large_value_types_out_of_row na to 1 , aby uzyskać optymalną wydajność. Gdy wartość opcji large_value_types_out_of_row zostanie zmieniona, istniejące wartości varchar(max),nvarchar(max),varbinary(max) i xml nie są od razu konwertowane. Przechowywanie tych znaków jest zmieniane w miarę ich późniejszych aktualizacji. Wszelkie nowe wartości wprowadzone do tabeli są przechowywane zgodnie z obowiązującą opcją tabeli. Aby uzyskać natychmiastowe rezultaty, albo skopiuj dane, a następnie ponownie wypełnij tabelę po zmianie ustawień large_value_types_out_of_row , albo zaktualizuj każdą kolumnę małych i średnich typów dużych wartości na siebie, tak aby przechowywanie ciągów znaków zostało zmienione przy aktywnej opcji tabeli. Rozważ odbudowę indeksów w tabeli po aktualizacji lub ponownej populacji, aby ją skondensować.
Permissions
Do wykonania sp_tableoptionALTER wymagana jest zgoda na stole.
Przykłady
A. Przechowywanie danych XML poza wierszem
Poniższy przykład określa, że dane xml w tabeli HumanResources.JobCandidate są przechowywane poza wierszem.
USE AdventureWorks2022;
GO
EXECUTE sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;
B. Włącz format pamięci desętnej na tabeli
Poniższy przykład modyfikuje tabelę Production.WorkOrderRouting , aby przechowywać typ danych dziesiętnych w formacie pamięci wardecymalnej .
USE master;
GO
-- The database must be enabled for vardecimal storage format
-- before a table can be enabled for vardecimal storage format
EXECUTE sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO
USE AdventureWorks2022;
GO
EXECUTE sp_tableoption 'Production.WorkOrderRouting', 'vardecimal storage format', 'ON';
Treści powiązane
- sys.tables (Transact-SQL)
- OBJECTPROPERTY (Transact-SQL)
- System procedur składowanych (Transact-SQL)
- procedury składowane aparatu bazy danych (Transact-SQL)