Aracılığıyla paylaş


İç tablolar

SQL Server aşağıdaki özellikleri desteklemek için iç tablolar otomatik olarak oluşturur:

  • Birincil xml dizinler

  • Kayma dizinler

  • Service Broker

  • Sorgu bildirimleri

  • Değişiklik izleme

İç tablolar, başka bir kullanıcı eylem bir yan etkisidir.Örneğin, oluşturduğunuzda, bir birincil xml dizin SQL Server otomatik olarak bir iç oluşturur tablo shredded xml belgesi veri. devam ettirmek içinİç tablolar görünür sys şema her veritabanı ve benzersiz, sistem tarafından oluşturulan adları, örneğin, kendi işlev gösteren xml_index_nodes_2021582240_32001 veya queue_messages_1977058079.

İç tablolar kullanıcı erişimli veri içerir ve bunların şema sabit ve değiştirilemez metinlerdir.İç tablo adlarında başvuru yapamazsınız Transact-SQL deyimleri.Örneğin, yapamazsınız yürütmek seçme gibi bir deyim * from <sys.internal_table_name>.Ancak, iç tablo meta veriler görmek için katalog görünümleri sorgulama yapabilirsiniz.

İç tablo meta verileri görüntüleme

Görebileceğiniz meta veriler kullanarak iç tablolar ile ilişkili sys.internal_tables Katalog görünümü.Bu görünümü kullanarak, şema iç tablo görüntüleyebilirsiniz.Çünkü iç tablolar birçok kullanıcı tablo olarak aynı özelliklere sahip sys.internal_tables görünüm devralır sütunlar'dan sys.objects Katalog görünümü ve bir tür olan 'IT'.Kullanıcı tablolar ile iç tablo meta veriler sütun görünür olarak sys.columns Katalog görünümü meta veriler için sistem tarafından oluşturulan dizinler ve tablolar iç İstatistikler ise görünür sys.indexes ve sys.stats katalog görünümleri.

Diğer katalog görünümleri için katılarak, ayırma ve alan kullanımı hakkında bilgi de elde edilebilir.Bkz: "İç tablo depolama" Bu konuda daha sonra.

Üst düzey katalog veri modeli aşağıda gösterilmiştir.

İç tablo katalog görünümleri diyagramı

İç tablo meta verileri görüntülemek için izinleri

İç tablo meta veriler veritabanı içinde görüntülemek için aşağıdaki izinler ve grup üyeliklerini biri gerekir:

  • control server izni.

  • Denetim izni veritabanında.

  • Üyelik db_owner veya sysadmin grubu.

  • Üst varlık (xml veya kayma dizin veya sıra) görüntüleyebileceğiniz bir kullanıcı bu varlık için iç tablo görüntüleyebilirsiniz.

xml dizin meta veri görüntüleme

Aşağıda bir xml dizin üzerinde bir iç tablo meta veriler yapısını gösterir.

XML dizini katalog görünümleri diyagramı

Çizimde gösterildiği Katalog görünümü ilişkilerini anlamak için istediğinizi düşünelim bir birincil xml dizin Xp üzerinde oluşturulan tablo t.meta verilerni tablo içinde sys.tablos , xml dizinler için görünümü ve meta veriler katalog sys.xml_indexes Katalog görünümü.İç tablo meta veriler Ti tarafından oluşturulan SQL Server içinde olduğu verileri xml dizin devam ettirmek için sys.internal_tables görünümü.

İç tablo arasında bir ilişki bulmak için Ti ve kullanıcı tablo t, yapabilirsiniz birleştirmek parent_id sütunu sys.internal_tables görüntülemek için object_id sütunu sys.tables görünümü.İç tablo arasında bir ilişki bulmak için Ti ve xml dizin Xp, yapabilirsiniz birleştirmek parent_id ve parent_minor_id sütunlarından sys.internal_tables için object_id ve index_id sütunlarından sys.xml_indexes.g aşağıdaki örneğe bakın.

Kayma dizin meta veri görüntüleme

Kayma dizinler meta veriler xml dizinler meta veriler için çoğunlukla eşdeğerdir.Kayma dizinler kullanan fark var sys.spatial_indexes yerine sys.xml_indexes ve kullanmanız gereken sys.spatial_index_tessellationsbir kayma dizin kayma parametrelerini görüntülemek için.

Aşağıdaki resimde kayma dizin üzerinde bir iç tablo meta veriler yapısını gösterir.

Kayma dizini katalog görünümleri diyagramı

Çizimde gösterildiği Katalog görünümü ilişkilerini anlamak için istediğinizi düşünelim bir kayma dizin Si, tablo üzerinde oluşturulan t.meta verilerni tablo içinde sys.tablos de kayma dizin için görünümü ve meta veriler katalog sys.spatial_indexes katalog görünüm ve sys.spatial_index_tessellations Katalog görünümü.İç tablo meta veriler Titarafından oluşturulmuştur, SQL Server kayma dizin verileri kalıcı olduğu sys.internal_tables görünümü.

İç tablo arasında bir ilişki bulmak için Ti ve kullanıcı tablo t, yapabilirsiniz birleştirmek parent_id sütunu sys.internal_tables görüntülemek için object_id sütunu sys.tables görünümü.İç tablo arasında bir ilişki bulmak için Ti ve kayma dizini Si, yapabilirsiniz birleştirmek parent_id ve parent_minor_id sütunlarından sys.internal_tables için object_id ve index_id sütunlarından sys.spatial_indexes.Daha fazla bilgi için bkz: örnek M, bu konunun ilerisinde.

Hizmet Aracısı meta verileri görüntüleme

Aşağıdaki resimde bulunan bir Hizmet Aracısı sıra bir iç tablo meta veriler yapısını gösterir.Hizmet Aracısı iletileri, sorgu bildirimleri ve olay bildirimleri Hizmet Aracısı sıralar kullanın.Buna ek olarak, Hizmet Aracısı özelliği de bir iç tablo tüm veritabanlarını tüm Hizmet Aracısı Hizmetleri hakkındaki bilgileri depolamak için kullanır.Bu iç tablo içinde yer aldığı tempdb sistem veritabanı.

Service broker katalog görünümleri diyagramı

Sorgu bildirim meta verileri görüntüleme

Aşağıdaki resimde bir sorgu bildirim Abonelik üzerinde bir iç tablo meta veriler yapısını gösterir.İç tablolar, sorgu bildirim abonelik parametreleri depolamak için kullanılır.

Sorgu bildirimi katalog görünümleri diyagramı

Dahili tablo depolama

İç tablolar aynı dosya grubu üst varlık olarak yerleştirilir.Satır giden örnek iç tablolar içinde-satır için tüketmek sayfa sayısını döndürmek için f aşağıda gösterilen katalog sorgu ve büyük nesne (lob) veri kullanabilirsiniz.

You can use the sp_spaceused system procedure to return space usage data for internal tables.sp_spaceused reports internal table space in the following ways:

  • Sıra adı belirtildiğinde sıra ile ilişkilendirilmiş temel iç tablo başvurulan ve depolama tüketim bildirdi.

  • İç tabloları xml dizinler, kayma dizinleri ve tam metin dizinleri tarafından kullanılan sayfaları eklenir index_size sütun.Bir tablo veya dizinli görünüm adı belirtildiğinde, xml dizinler, kayma dizinleri ve o nesnenin tam metin dizinlerini sayfaları sütunlar dahil ayrılmış ve index_size.

Örnekler

Aşağıdaki örnekler, iç tablo meta veriler katalog görünümleri kullanarak sorgu nasıl göstermektedir.

A.Sys.objects katalog görünümden sütunlar devralan iç tabloları göster

SELECT * FROM sys.objects WHERE type = 'IT';

B.(Hangi sys.objects devralınır, dahil) tüm iç tablo meta veriler dönmek

SELECT * FROM sys.internal_tables;

C.İç tablo sütunlar ve sütun veri türleri dönmek

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name
    ,itab.name AS internal_table_name
    ,typ.name AS column_data_type 
    ,col.*
FROM sys.internal_tables AS itab
JOIN sys.columns AS col ON itab.object_id = col.object_id
JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id
ORDER BY itab.name, col.column_id;

D.İç tablo dizinleri döndürür

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name
    , itab.name AS internal_table_name
    , idx.*
FROM sys.internal_tables AS itab
JOIN sys.indexes AS idx ON itab.object_id = idx.object_id
ORDER BY itab.name, idx.index_id;

E.İç tablo istatistiği

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name
    ,itab.name AS internal_table_name
    , s.*
FROM sys.internal_tables AS itab
JOIN sys.stats AS s ON itab.object_id = s.object_id
ORDER BY itab.name, s.stats_id;

F.İç tablo bölümü ve ayırma birimi bilgilerini döndürür

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name
    ,itab.name AS internal_table_name
    ,idx.name AS heap_or_index_name
    ,p.*
    ,au.*
FROM sys.internal_tables AS itab
JOIN sys.indexes AS idx
--     JOIN to the heap or the clustered index
    ON itab.object_id = idx.object_id AND idx.index_id IN (0,1)
JOIN   sys.partitions AS p 
    ON p.object_id = idx.object_id AND p.index_id = idx.index_id
JOIN   sys.allocation_units AS au
--     IN_ROW_DATA (type 1) and ROW_OVERFLOW_DATA (type 3) => JOIN to partition's Hobt
--     else LOB_DATA (type 2) => JOIN to the partition ID itself.
ON au.container_id =  
    CASE au.type 
        WHEN 2 THEN p.partition_id 
        ELSE p.hobt_id 
    END
ORDER BY itab.name, idx.index_id;

G.xml dizinler için iç tablo meta veriler dönmek

SELECT t.name AS parent_table
    ,t.object_id AS parent_table_id
    ,it.name AS internal_table_name
    ,it.object_id AS internal_table_id
    ,xi.name AS primary_XML_index_name
    ,xi.index_id as primary_XML_index_id
FROM sys.internal_tables AS it
JOIN sys.tables AS t 
    ON it.parent_id = t.object_id
JOIN sys.xml_indexes AS xi 
    ON it.parent_id = xi.object_id
    AND it.parent_minor_id  = xi.index_id
WHERE it.internal_type_desc = 'XML_INDEX_NODES';
GO

H.Hizmet Aracısı sıraları için iç tablo meta veriler dönmek

SELECT q.name AS queue_name
    ,q.object_id AS queue_id
    ,it.name AS internal_table_name
    ,it.object_id AS internal_table_id
FROM sys.internal_tables AS it
JOIN sys.service_queues  AS  q ON it.parent_id = q.object_id
WHERE it.internal_type_desc = 'QUEUE_MESSAGES';
GO

Ö.Tüm Hizmet Aracısı Hizmetleri için iç tablo meta veriler dönmek

SELECT * 
FROM tempdb.sys.internal_tables 
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';
GO

J.Sorgu bildirim abonelikleri için iç tablo meta veriler dönmek

SELECT qn.id AS query_subscription_id
    ,it.name AS internal_table_name
    ,it.object_id AS internal_table_id
FROM sys.internal_tables AS it
JOIN sys.dm_qn_subscriptions AS qn ON it.object_id = qn.object_id
WHERE it.internal_type_desc = 'QUERY_NOTIFICATION';

K.Kayma dizinler için iç tablo meta veriler dönmek

SELECT t.name AS parent_table
    ,t.object_id AS parent_table_id
    ,it.name AS internal_table_name
    ,it.object_id AS internal_table_id
    ,si.name AS spatial_index_name
    ,si.index_id as spatial_index_id
FROM sys.internal_tables AS it
JOIN sys.tables AS t 
    ON it.parent_id = t.object_id
JOIN sys.spatial_indexes AS si 
    ON it.parent_id = si.object_id
    AND it.parent_minor_id  = si.index_id
WHERE it.internal_type_desc = 'EXTENDED_INDEXES';
GO