sp_tableoption (Transact-sql)
Kullanıcı tanımlı tablo değerleri seçenek ayarlar. sp_tableoptiontablolarla satır davranışını denetlemek için kullanılan varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, image, ya da büyük kullanıcı tanımlı türü sütunlarındaki.
Önemli |
---|
Satır metni özelliği bir sonraki sürümünde kaldırılacak SQL Server. Büyük bir değer veri depolamak için kullanmanızı öneririz varchar(max), nvarchar(max)ve varbinary(max)veri türlerini. |
Transact-SQL Sözdizim Kuralları
Sözdizimi
sp_tableoption [ @TableNamePattern = ] 'table'
, [ @OptionName = ] 'option_name'
,[ @OptionValue =] 'value'
Bağımsız değişkenler
@ TableNamePattern ='table'
Nitelikli ya da niteliksiz bir kullanıcı tanımlı veritabanı tablonun adıdır. Tam olarak nitelenmiş tablo adı, sağlanan bir veritabanı adı dahil olmak üzere, geçerli veritabanının adını veritabanı adı olmalıdır. Birden çok tablo tablo seçeneklerini aynı anda ayarlanabilir değil. tableise nvarchar(776), hiçbir varsayılan ile.@ SeçenekAdı = 'option_name'
Bir tablo seçeneği adıdır. option_nameise varchar(35), hiçbir varsayılan NULL. option_nameAşağıdaki değerlerden biri olabilir.Değer
Açıklama
bulk load Tablo kilidi
(Varsayılan) devre dışı bırakıldığında, kullanıcı tanımlı tablo satır kilitleri edinmek bulk load işlemi neden olur. Etkinleştirildiğinde, kullanıcı tanımlı tablo toplu güncelleştirme kilit elde toplu yükleme işlemleri neden olur.
satır kilit Ekle
Artık desteklenmiyor.
Kilitleme stratejisi SQL Serverolan satır kilitleme ile olası yükselme sayfa veya Tablo kilitleme. Bu seçenek kilitleme davranışını etkilemez SQL Serverve varolan komut dosyaları ve prosedürleri uyumluluk için eklenmiştir.
satır metni
KAPALI veya 0 (devre dışı, varsayılan değer), geçerli davranışını değiştirmez ve satır içinde hiçbir blob yok.
Belirtilen ve @ OptionValue is on (etkin) veya bir tamsayı değeri 24 ile 7000, yeni text, ntext, ya imagedizeleri doğrudan veri satırında depolanır. Tüm varolan blob (ikili büyük nesne: text, ntext, ya imageveri) değiştirilir satır metni blob değeri güncelleştirildiğinde biçimi. Daha fazla bilgi için, Yorumlar'a bakın.
büyük bir değer türü satır
1 = varchar(max), nvarchar(max), varbinary(max), xmlve büyük kullanıcı tanımlı türü (udt) sütunları tabloda satır, kök 16 baytlık işaretçisiyle dışına depolanır.
0 = varchar(max), nvarchar(max), varbinary(max), xmlve büyük udt değerleri doğrudan veri satırında depolanır, bir sınırlı 8000 bayt miktarı ve değeri olarak kayda sığabilecek. Değer kayıtta uymazsa, satır içinde saklı bir işaretçidir ve kalan satır lob depolama alanı dışına depolanır. Varsayılan değer sıfırdır.
NotNe zaman büyük bir değer türü satır ayarlanır 1, kısmi güncelleştirmeleri bir lob sonra bir tetikleyici harekete geçmez.Normal güncellemeleri sonra bir tetikleyici harekete.Ne zaman güncelleştirmelerin yapılma bir dizini yeniden oluşturma kullanarak sırasında ONLINE = ON, tüm güncelleştirmeleri bir lob sonra bir tetikleyici harekete sonra.Vardecimal depolama biçimi
true, ya da 1, belirlenen tablo vardecimal depolama biçimi için etkinleştirilir. YANLIŞ, kapalı veya 0 Tablo vardecimal depolama biçimi için etkinleştirilir. Vardecimal depolama biçimi yalnızca veritabanı vardecimal depolama biçimi kullanarak etkinleştirildiğinde etkinleştirilebilir sp_db_vardecimal_storage_format. İçinde SQL Server 2008ve sonra vardecimaldepolama biçimi önerilmiyor. Satır sıkıştırma kullanın. Daha fazla bilgi için, bkz. Veri Sıkıştırma. Varsayılan değer sıfırdır.
@ OptionValue ='value'
Olduğu olup olmadığını option_nameetkin (true, üzerinde veya 1) ya da (yanlış, kapalı veya 0) devre dışı. valueise varchar(12), hiçbir varsayılan ile. valuebüyük/küçük harf duyarsızdır.İçin satır metni seçeneği, geçerli seçenek değerleri olan 0, on, off, ya da 7000 ile 24 arasında bir tamsayı. Ne zaman valueaçık, 256 Byte sınırı varsayılanlara.
Dönüş Kodu Değerleri
0 (başarılı) veya hata numarasını (başarısız)
Açıklamalar
sp_tableoptionyalnızca kullanıcı tanımlı tablo seçenek değerlerini ayarlamak için kullanılabilir. Tablo özelliklerini görüntülemek için objectproperty kullanın.
Satır metni seçeneği de sp_tableoptionetkinleştirilebilir veya devre dışı metin sütunları içeren tablolar üzerinde. Tablo bir metin sütunu yoksa SQL Serverhata yükseltir.
Ne zaman satır metni seçeneği etkinse, @ OptionValue parametresi, bir satırda bir blob depolanması için en büyük boyutu belirtmek kullanıcıların izin verir. Varsayılan değer, 256 Byte olmakla birlikte, değerler 7000 bayt ile 24 arasında olabilir.
text, ntext, ya imagedizeleri, veri satırında depolanır, aşağıdaki koşullar geçerliyse:
satırda metin etkindir.
Dize uzunluğunu belirtilen sınırdan daha kısadır @ OptionValue
Veri satırı kullanılabilir yeterli alan yok.
blob dizeleri veri satırında depolandığında, okuma ve yazma text, ntext, ya imagedizeleri olarak hızlı okuma ya da yazma karakter ve ikili dizeleri olarak olabilir. SQL Serverokuma veya yazma blob dizesini ayrı sayfalara erişim yok.
Eğer bir text, ntext, ya imagedize belirtilen sınırın veya satır kullanılabilir alanı daha büyük, işaretçiler satır yerine depolanır. Yine de satır blob dizeleri depolamak için koşulları geçerlidir: Işaretçileri tutmak için veri satırı yeterli boş alan olması gerekir.
blob dizelerini ve bir tablonun satır depolanan işaretçiler değişken uzunluklu dizelere benzer şekilde kabul edilir. SQL Serveryalnızca dize veya işaretçiyi saklamak için gereken bayt sayısını kullanır.
Varolan blob dizeleri değil hemen dönüştürülür zaman satır metni ilk etkinleştirilir. Sadece güncellenir dizeleri dönüştürülür. Aynı şekilde, ne zaman satır metni opsiyon artırılır, text, ntext, ya imagezaten veri sıradaki dizelerin değil dönüştürülür onlar güncelleştirilir zaman kadar yeni sınırına uyun.
[!NOT]
Devre dışı satır metni veya seçeneği limit azaltma seçeneği tüm BLOB'lar; dönüşüm gerektirecektir Bu nedenle, işlem dönüştürülmelidir blob dizeleri sayısına bağlı olarak uzun olabilir. Tablo dönüştürme işlemi sırasında kilitli.
Otomatik olarak bir tablo değişkeni, döndüren bir işlev içeren bir tablo değişkeni olan satır metni seçeneği ile varsayılan satır sınırı 256 etkin. Bu seçenek değiştirilemez.
satırda metin textptr, WRITETEXT ve updatetext readtext işlevlerini destekler. Kullanıcılar SUBSTRING() işlevi ile bir blob bölümlerini okuyabilirsiniz, ancak satır metin işaretçiler farklı süre ve diğer metin işaretçiler gelen numara sınırları olduğunu unutmamalıyız.
Tablo vardecimal depolama biçimi normal ondalık depolama biçimine geri değiştirmek için veritabanı Basit kurtarma modunda olması gerekir. Kurtarma modunu değiştirme yedekleme amacıyla günlük zincirini kıracak, bu nedenle tablo vardecimal depolama biçimi çıkardıktan sonra bir tam veritabanı yedeği oluşturmak.
İzinler
Yürütülecek sp_tableoptiontablo üzerinde alter izni gerektirir.
Örnekler
A.XML veri satırında depolamak
Aşağıdaki örnek belirtir xmlverileri HumanResources.JobCandidatetablo saklanan satır dışında.
USE AdventureWorks2012;
GO
EXEC sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;
USE AdventureWorks2012;
GO
EXEC sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;
B.Tablo vardecimal depolama biçimi etkinleştirme
Aşağıdaki örnek Production.WorkOrderRoutingsaklamak için tablo decimalveri türü vardecimal storage 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 'AdventureWorks2012', 'ON';
GO
USE AdventureWorks2012;
GO
EXEC sp_tableoption 'Production.WorkOrderRouting',
'vardecimal storage format', 'ON';
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 'AdventureWorks2012', 'ON';
GO
USE AdventureWorks2012;
GO
EXEC sp_tableoption 'Production.WorkOrderRouting',
'vardecimal storage format', 'ON';