Share via


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:

Satır özelliğinin metni, gelecekteki bir sürümüne kaldırılacaktır. SQL Server. Büyük bir değer verisini depolamak için , birini kullanmanızı öneririz varchar(max), nvarchar(max) ve varbinary(max) veri türleri.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • [ @TableNamePattern =] 'table'
    Tam veya nonqualified tablo kullanıcı tanımlı veritabanı adıdır.Tam olarak nitelenmiş bir tablo adı, bir veritabanı adı da dahil olmak üzere sağlanan, veritabanı adı, geçerli veritabanının adı olmalıdır.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.

    Değer

    Açıklama

    Tablo kilit toplu yükleme hakkında

    (Varsayılan) devre dışı bırakıldığında, satır kilidi almak için kullanıcı tanımlı tablolarda toplu yükleme işlemi neden olur.Bu seçenek etkinleştirildiğinde, bir toplu güncelleştirme kilit almak için kullanıcı tanımlı tablolarda toplu yükleme işlemleri neden olur.

    Satır kilit Ekle

    ' De desteklenmiyor SQL Server 2008.

    Kilitleme stratejiyi SQL Server Satır, sayfa veya tabloyu kilitlemeyi olası yükseltme ile kilitleme. Bu seçenek kilitleme davranışı üzerinde hiçbir etkisi yoktur... SQL Server ve yalnızca varolan komut dosyalarını ve yordamlar uyumluluk için eklenmiştir.

    Satır metni

    Ne zaman OFF veya devre 0 (varsayılan dışı,), geçerli davranışını değiştirmek ve satırda yok bir BLOB yok.

    Belirtilen ve @ OptionValue AÇıK'tır (etkin) veya yeni 7000 ile 24 arasında bir tamsayı değeri text, ntext, veya image dizeleri doğrudan veri satırında depolanır. Varolan tüm BLOB (ikili büyük nesne: text, ntext, veya image BLOB değeri güncelleştirildiği verileri) satır biçiminde metne değişir. Daha fazla bilgi için bkz: Notlar.

    büyük bir değer türü satır

    1 = varchar(max), nvarchar(max), varbinary(max), xml ve büyük kullanıcı tanımlı tür (UDT) tablo sütunları, satır, bir kök 16 baytlık işaretçi depolanır.

    0 = varchar(max), nvarchar(max), varbinary(max), xml UDT değerleri doğrudan veri satırı 8000 bayt miktarı sınırı kadar depolanır ve değeri uzun olabilir ve uyma kayıttaki. Değer kayıtta sığmazsa, satır içinde saklı bir işaretçidir ve kalan satır LOB depolama alanı dışında depolanan.Varsayılan değer sıfırdır.

    vardecimal depolama biçimi

    DOĞRU ON ya da 1, belirtilen tablo vardecimal depolama biçimi için etkinleştirilir.Tablo, YANLıŞ KAPALı ya da 0 vardecimal depolama biçimi için etkinleştirilmedi.Yalnızca veritabanı vardecimal depolama biçimini kullanarak etkinleştirildiğinde Vardecimal depolama biçimi etkinleştirilebilir. sp_db_vardecimal_storage_format.Vardecimal depolama biçimi hakkında daha fazla bilgi için bkz: Decimal veri değişken uzunluk depolama. This option requires SQL Server 2005 Service Pack 2.Vardecimal storage format is available only in SQL Server Enterprise, Developer, and Evaluation editions.Içinde SQL Server 2008 ve daha sonra tüm kullanıcı veritabanları için vardecimal depolama biçimi. Içinde SQL Server 2008 ve daha yeni sürümü vardecimal depolama biçimi önerilmiyor. Bunun yerine, SATıR sıkıştırmasını kullanın.Daha fazla bilgi için bkz:Sıkıştırılmış tablolar ve dizinler oluşturma.Varsayılan değer sıfırdır.

  • [ @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.

    Satır seçeneği, metin için geçerli seçenek, ON, OFF, 0 ya da 7000 ile 24 arasında bir tamsayı değerlerdir.Ne zaman value ON, 256 bayt sınırını varsayılanlarına olur.

Dönüş Kodu Değerleri

0 (başarılı) ya da hata numarasını (hata)

Remarks

sp_tableoption yalnızca kullanıcı tanımlı tablo için bir seçenek değerlerini ayarlamak için kullanılır.Tablo özelliklerini görüntülemek için , OBJECTPROPERTY Ek Yardım düğmesini kullanın.

Metin satırı seçeneğinde sp_tableoption etkin veya yalnızca metin sütunları içeren tabloyu devre dışı.Tablo bir metin sütununu yoksa SQL Server bir hata üretir.

Metnin satır seçeneği etkinleştirildiğinde, @ OptionValue parametresi bir satırda bir BLOB için depolanacak en büyük boyutu belirtmek, kullanıcılar izin verir.Varsayılan 256 bayt'tır, ancak değerler 7000 bayt ile 24 değişebilir.

text, ntext, veya image Aşağıdaki koşullar geçerli dizeler veri satırında saklanır:

  • Satır metni etkinleştirilir.

  • Dizenin uzunluğu @ OptionValue belirtilen sınırdan daha kısa olur.

  • Verileri satır yeterli alan yok.

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.

Varsa bir text, ntext, veya image dize belirlenmiş sınırın veya satırdaki kullanılabilir alan büyük, işaretçi bunun yerine satır depolanır. Satırda BLOB dizeleri depolamak için koşulları yine de uygulanır: Işaretçileri tutmak için veri satırında yeterli boş alan olmalıdır.

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.

Hemen satırındaki metin ilk kez etkinleştirildiğinde, varolan bir BLOB dizeleri dönüştürülmez.Yalnızca güncelleştirilen dizelerin dönüştürülür.Benzer şekilde, ne saat metnin satır seçeneği sınırı artar, text, ntext, veya image Yeni bir sınıra kadar güncelleştirilmeden saat kalmak için zaten veri sıradaki dizelerin dönüştürülmeyecek.

Not

Tüm BLOB'lar çevrilmesi metinde satır bölünebilir seçeneğini devre dışı bırakma veya seçeneği sınırını azaltma gerektirir; bu nedenle, dönüştürülmeli BLOB dizeleri sayısına bağlı olarak uzun olabilir.Tablo dönüştürme işlemi sırasında kilitlendi.

Bir tablo değişkeni döndüren bir işlev içeren BIR tablo değişkeni, metni otomatik olarak 256 varsayılan satır içi sınırı ile etkin satır seçeneği vardır.Bu seçenek değiştirilemez.

Satır metni TEXTPTR WRITETEXT, UPDATETEXT ve READTEXT işlevlerini destekler.Kullanıcılar SUBSTRING() işlev ile bir BLOB bölümlerini okuyabilir, ancak satır içinde metin işaretçileri farklı süre ve diğer metin işaretçileri gelen numara sınırları olduğunu unutmamalısınız.Daha fazla bilgi için bkz:Ntext, metin ve resim verileri yönetme.

Değiştirmek için bir tablo vardecimal depolama biçimden normal ondalık depolama biçimine geri dönmek için veritabanı SIMPLE kurtarma modunda olması gerekir.Kurtarma moduna değiştirme yedek amacıyla günlük zinciri keser, bu nedenle vardecimal depolama biçimden kaldırdıktan sonra tam veritabanı yedeği oluşturmalısınız bir tablo.

İzinler

Sp_tableoption çalıştırmak için tablo ALTER izni gerektirir.

Örnekler

C.Satır XML verileri saklama

Aşağıdaki örnek belirleyen xml verilerde HumanResources.JobCandidate tablo satırı dışında saklanırlar.

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

b.Temel depolama biçimi vardecimal etkinleştirme bir tablo

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';