Bu, XML dizinlerinin şu anda> = 256000 olan bir kimlik şemasına sahip olabilen tek tür olduğu yanılgısına dayanmaktadır (en azından gözlemlerine dayanmaktadır; bu şema AFAIK belgelenmemiştir, bu yüzden kasıtlı olup olmadığından bile emin değildir). Muhtemelen mevcut sürümlerde iyi, ama sonra ne tür dizin ekleneceğini ve kimlik şemasının nerede başlayacağını kim bilebilir? XML dizinlerini hariç tutmak istiyorsanız, artık başka bir şeyi de hariç tutuyorsunuz. Örneğin, uzamsal dizinler id = 384000'de başlıyor gibi görünüyor. Yukarıdaki sorgu uzamsal dizinleri içerecek, ancak XML dizinlerini içermeyecekse, sürpriz olacaklar.
Çok daha iyi bir filtre:
WHERE type <> 3;
... hatta daha da iyisi, kendi kendini belgelediği için ...
WHERE type_desc <> N'XML';
Ve şimdi, örneğin, uzamsal dizinleri de hariç tutmak istediğinizde, sorgunuz ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... uzamsal dizinler için kimlik değerlerinin hangi sayısal aralığı işgal edebileceğini (veya etmeyeceğini) anlamak yerine. Bunda iyi şanslar.
Bunlar sys.indexes (Transact-SQL) içinde oldukça açık bir şekilde belgelenmiştir . Bu sihirli numaraya referans görmüyorum ve bu sihirli numaraya güvenmeleri gereken bir şey olmadığını görebilmeniz için öğretici yazarınızı buraya yönlendirmenizi şiddetle tavsiye ediyorum (başkalarına güvenmeyi öğretmeyi unutmayın).
sys.sysindexkeys