sp_indexoption (Transact-sql)
Seçenek değerleri kullanıcı tanımlı kümelenmiş ve kümelendirilmemiş dizinler veya tablolarda Kümelenmiş dizin kilitleme ayarlar.
SQL Server Veritabanı AltyapısıOtomatik olarak sayfa, satır veya tablo düzeyi kilitleme seçimler yapar. Bu seçenekleri el ile ayarlamanız gerekmez. sp_indexoption her zaman kilit belirli bir türde olduğunu kesin olarak bilen uzman kullanıcıların uygun sağlanır.
Önemli |
---|
Bu özellik Microsoft SQL Server'ın bir sonraki sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.Yerine ALTER INDEX (Transact-SQL). |
Transact-SQL Sözdizim Kuralları
Sözdizimi
sp_indexoption [ @IndexNamePattern = ] 'table_or_index_name'
, [ @OptionName = ] 'option_name'
, [ @OptionValue = ] 'value'
Bağımsız değişkenler
@ IndexNamePattern='table_or_index_name'
Nitelikli ya da niteliksiz bir kullanıcı tanımlı tablo ya da dizin adıdır. table_or_index_nameise nvarchar(1035), hiçbir varsayılan ile. Tırnak işaretleri yalnızca nitelikli bir dizin veya tablo adı belirtilmişse gereklidir. 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. Tablo adı ile dizin yok belirtilirse, kümelenmiş bir dizin varsa, belirtilen seçenek değeri tüm dizinler için bu tablo ve tablo üzerinde ayarlanır.@ SeçenekAdı ='option_name'
Bir dizin seçeneği adıdır. option_nameise varchar(35), hiçbir varsayılan ile. option_nameAşağıdaki değerlerden biri olabilir.Değer
Açıklama
İzin
DOĞRU olduğunda, satır kilitleri dizin erişirken izin verilir. Veritabanı AltyapısıSatır kilitleri ne zaman kullanılacağını belirler. false olduğunda, satır kilitleri kullanılır. Varsayılan değer TRUE'tur.
AllowPageLocks
DOĞRU olduğunda, sayfa kilitlemeleri dizin erişirken izin verilir. Veritabanı AltyapısıNe zaman sayfa kilitleri kullanılır belirler. false olduğunda sayfa kilitleri kullanılır. Varsayılan değer TRUE'tur.
DisAllowRowLocks
Ne zaman kapalı, satır kilitleri kullanılır. false olduğunda, satır kilitleri dizin erişirken izin verilir. Veritabanı AltyapısıSatır kilitleri ne zaman kullanılacağını belirler.
DisAllowPageLocks
Ne zaman kapalı, sayfa kilitleri kullanılır. false olduğunda sayfa kilitlemeleri dizin erişirken izin verilir. Veritabanı AltyapısıNe zaman sayfa kilitleri kullanılır belirler.
@ OptionValue ='value'
Belirtir olup olmadığını option_nameayardır etkin (true, Evet, veya 1) veya devre dışı (false, off, no, ya da 0). valueise varchar(12), hiçbir varsayılan ile.
Dönüş Kodu Değerleri
0 (başarılı) veya 0 (hata)'den büyük
Açıklamalar
xml dizinler desteklenmez. xml dizin belirtilir, veya bir tablo adı hiçbir dizin adı ile belirtilir ve xml dizin tablo içerir, deyimi başarısız olur. Bu seçenekleri ayarlamak için kullanın alter INDEX onun yerine.
Geçerli satır ve sayfa kilitleme özellikleri görüntülemek için INDEXPROPERTY ya da sys.indexes Katalog görünümü.
- Satır, sayfa ve tablo düzeyi kilitleri dizin erişirken verilir ne zaman izin = true veya DisAllowRowLocks = false, ve AllowPageLocks = true veya DisAllowPageLocks = false. Veritabanı AltyapısıUygun kilit seçer ve gelen bir satır ya da sayfa kilidi bir tabloyu kilitlemek için kilit escalate.
Yalnızca bir tablo düzeyi kilitleme dizin erişirken izin verilen zaman izin = false veya DisAllowRowLocks = true ve AllowPageLocks = yanlış veya DisAllowPageLocks = true.
Tablo adı ile dizin yok belirtilirse, bu tablodaki tüm dizinleri ayarları uygulanır. Temel tablo kümelenmiş bir dizin olduğunda (yani, bir yığın 's) ayarlarını aşağıdaki şekilde uygulanır:
Ne zaman izin ya DisAllowRowLocks olan herhangi bir ilişkili kümelendirilmemiş dizinler ve doğru veya yanlış olarak ayarlanırsa, ayar yığına uygulanır.
Ne zaman AllowPageLocks seçeneğini true olarak ayarlanır veya DisAllowPageLocks ayarlanır herhangi kümelendirilmemiş dizinler ilişkili ve false olarak yığına ayarı uygulanır.
Ne zaman AllowPageLocks seçeneğini false ayarlanır veya DisAllowPageLocks ise true olarak ayarlanırsa, ayarı tam kümelendirilmemiş dizinler uygulanır. Başka bir deyişle, tüm sayfa kilitlemeleri kümelendirilmemiş dizinler verilmez. Öbek üzerinde yalnızca paylaşılan (s), update (u) ve sayfa için özel (x) kilitleri izin verilmez. Veritabanı AltyapısıHala bir niyet sayfa kilidi (IS, IU veya IX) iç amaçlar için elde edebilirsiniz.
İzinler
Tabloda ALTER izni gerektirir.
Örnekler
A.Belirli bir dizin üzerindeki bir seçeneği ayarlama
Aşağıdaki örnek üzerinde sayfa kilitlemeleri izin vermeyen IX_Customer_ TerritoryID üzerinde dizin Customertablosu.
USE AdventureWorks2012;
GO
EXEC sp_indexoption N'Sales.Customer.IX_Customer_TerritoryID',
N'disallowpagelocks', TRUE;
B.Bir tabloda tüm dizinler üzerindeki bir seçeneği ayarlama
Aşağıdaki örnekte satır kilitleri ile ilişkili tüm dizinler üzerinde izin vermeyen Producttablosu. sys.indexesKatalog görünümü sorgulanan yürüttükten sonra ve önce sp_indexoptiondeyiminin sonuçlarını göstermek için yordam.
USE AdventureWorks2012;
GO
--Display the current row and page lock options for all indexes on the table.
SELECT name, type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'Production.Product');
GO
-- Set the disallowrowlocks option on the Product table.
EXEC sp_indexoption N'Production.Product',
N'disallowrowlocks', TRUE;
GO
--Verify the row and page lock options for all indexes on the table.
SELECT name, type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'Production.Product');
GO
C.Kümelenmiş dizin tablo üzerindeki bir seçeneği ayarlama
Aşağıdaki örnek bir tablo (yığın) Kümelenmiş dizin sayfa kilitlemeleri izin vermez. sys.indexesKatalog görünümü sorgulanan önce ve sonra sp_ indexoption deyiminin sonuçlarını göstermek için yordam yürütüldüğünde.
USE AdventureWorks2012;
GO
--Display the current row and page lock options of the table.
SELECT OBJECT_NAME (object_id) AS [Table], type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE OBJECT_NAME (object_id) = N'DatabaseLog';
GO
-- Set the disallowpagelocks option on the table.
EXEC sp_indexoption DatabaseLog,
N'disallowpagelocks', TRUE;
GO
--Verify the row and page lock settings of the table.
SELECT OBJECT_NAME (object_id) AS [Table], allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE OBJECT_NAME (object_id) = N'DatabaseLog';
GO