Aracılığıyla paylaş


Iç tablolar

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

  • Birincil XML dizinler

  • Kayma dizinler

  • Service Broker

  • Sorgu bildirimleri

  • Değişiklik izleme

Bir yan etkisi, başka bir kullanıcı eylem iç tablolarıdır.Örneğin, oluşturduğunuzda, birincil XML diziniSQL Serverotomatik olarak oluşturur iç tablosuna kalıcı shredded XML verileri.İç tablolar görünürsys şema her veritabanı ve benzersiz, örneğin kendi işlevini gösteren sistem tarafından oluşturulan adlar, xml_index_nodes_2021582240_32001 veya queue_messages_1977058079 .

İç tablo kullanıcı erişimli veri içerir ve bunların şeması sabit ve unalterable.İç tablo adlarında başvuru yapamazTransact-SQLifadeler.Örneğin, SELECT gibi bir deyim yürütülemiyor * FROM<sys.internal_table_name>.Ancak, dahili tablo meta veriler görmek için katalog görünümleri sorgulayabilirsiniz.

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

Kullanarak iç tablolarla ilişkilendirilen meta veriyi görüntüleyebileceğinizsys.internal_tables Katalog görünümü.Bu görünümü kullanarak, şema iç tablo görüntüleyebilirsiniz.Birçok kullanıcı tablosu, aynı özellikleri taşıyıp iç tablolar olması nedeniylesys.internal_tables görünümü sys.objects katalog görünümünden sütun alır ve bir tür olan 'IT'. Kullanıcı tablolarla iç tablo sütun meta veriler görünür olaraksys.Columns Katalog görünümü ve sistem tarafından oluşturulan dizinler ve tablolar iç İstatistikler meta veriler görülebilir sys.indexessys.stats katalog görünümleri. de

Diğer katalog görünümleri birleştirerek, ayırma ve alan kullanımı hakkında bilgi de elde edilebilir.Bu konuda daha sonra "İç tablo depolama" bakın.

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

Diagram of internal table catalog views

İç tablo meta veriler görüntülemek için izinler

Bir veritabanında iç tablo meta veriler görüntülemek için aşağıdaki izinleri veya grup üyeliği gerekir:

  • CONTROL SERVER izin.

  • Veritabanındaki Denetim izni.

  • Üyelikdb_owner or sysadmin group.

  • Üst varlık (XML ya da kayma dizin veya sıra) görüntüleyebileceğiniz bir kullanıcı, bu varlıkla ilgili iç tablo görüntüleyebilirsiniz.

XML dizini meta veriler görüntüleme

Aşağıda, bir iç tablo meta veriler yapısını bir XML dizini gösterir.

Diagram of XML index catalog views

Katalog görünümü şekilde gösterildiği ilişkileri anlamak için kabul birincil XML dizinXp üzerinde tablo T oluşturulan. meta verilerni tablo bulunduğusys.tablos Katalog görünümü XML dizin için meta veriler ise sys.xml_indexes Katalog görünümü. İç tablo meta verilerTi tarafından oluşturulan SQL Serververilerin bulunduğu XML dizin kaldırmak için sys.internal_tables görünümü.

İç tablo arasındaki ilişkiyi bulmak içinTi , kullanıcı tablo T yapabilirsiniz birleştirmek sys.tables görünümü. object_id sütununa sys.internal_tables görünümünün parent_id sütun To find the relationship between the internal table Ti and the XML index Xp, you can join the parent_id and parent_minor_id columns of sys.internal_tables to the object_id and index_id columns of sys.xml_indexes.G aşağıdaki örneğe bakın.

Kayma dizini meta veriler görüntüleme

Kayma dizinleri meta veriler meta veriler XML dizinler için çoğunlukla eşdeğerdir.Fark var, kayma dizinleri kullanmaksys.spatial_indexessys.xml_indexes ve yerine, bir kayma dizini. kayma parametrelerini görüntülemek içinsys.spatial_index_tessellations kullanmanız gerekebilir

Aşağıda, bir iç tablo meta veriler yapısını kayma bir dizini gösterir.

Diagram of spatial index catalog views

Katalog görünümü şekilde gösterildiği ilişkileri anlamak için kabul kayma bir dizinSiüzerinde tablo T , oluşturulan. meta veriler tablonun bulunduğusys.Tables Katalog görünümü kayma dizin için meta veriler ise sys.spatial_index_tessellations Katalog görünümü. sys.spatial_indexes Katalog görünümü de İç tablo meta verilerTi tarafından oluşturulan, SQL Serverkayma dizin verileri kaldırmak için bulunduğu sys.internal_tables görünümü.

İç tablo arasındaki ilişkiyi bulmak içinTi , kullanıcı tablo T yapabilirsiniz birleştirmek sys.tables görünümü. object_id sütununa sys.internal_tables görünümünün parent_id sütun İç tablo arasındaki ilişkiyi bulmak içinTi , sckayma dizin, birleştirmek ve parent_idparent_minor_idsys.spatial_indexesindex_id sütunlar ve object_idsys.internal_tablessütunlarının.Daha fazla bilgi için bu konuda daha sonra L, örneğe bakın.

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

Aşağıdaki resimde bir Hizmet Aracısı sırasına bir iç tablo meta veriler yapısını gösterir.Hizmet Aracısı kuyrukları, Hizmet Aracısı iletileri, sorgu bildirimleri ve olay bildirimlerini kullanın.Buna ek olarak, Hizmet Aracısı özelliği de bir iç tablo tüm veritabanlarının tüm hizmetlerini Hizmet Aracısı hakkındaki bilgileri depolamak için kullanır., Bu iç tablo olantempdb Sistem veritabanının.

Diagram of service broker catalog views

Query bildirim meta veriler görüntüleme

Bir iç tablo meta veriler yapısını bir sorgu bildirim aşağıda gösterilmiştir abonelik.İç tablo, sorgu bildirim aboneliği parametrelerinin depolamak için kullanılır.

Diagram of query notification catalog views

İç tablo depolama

İç tablo aynı dosya grubu üst varlık olarak yerleştirilir.Katalog sorgu satır dışı örnek, satır için iç tabloları kullanan sayfaların geri dönmek için F aşağıda gösterilen ve büyük nesne (LOB) verilerini 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:

  • Bir sıra adı belirtilmişse, iç temel tablo ilişkili sıra başvurulan ve depolama, tüketim bildirilir.

  • XML dizinler, dizinler kayma ve tam metin dizinlerini iç tablo tarafından kullanılan sayfa eklenirindex_size sütun.Bir tablo ya da dizinli görünüm adı belirtilmişse, XML dizinler, kayma dizinler ve bu nesne için tam metin dizinlerini sayfa sütunlarında eklenirayrılmış and index_size.

Örnekler

Katalog görünümleri kullanarak iç tablo meta veriler sorgulamak için aşağıdaki örneklerde gösterilmiştir.

C.Sys.objects katalog görünümünden sütun 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öndürür.

SELECT * FROM sys.internal_tables;

C.İç tablo sütunlar ve sütun veri türlerini döndürür.

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 istatistiklerini döndürür

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 bilgileri

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ç tablo meta veriler döndürür.

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ı kuyrukları iç tablo meta veriler döndürür.

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

I.Hizmet Aracısı hizmeti tüm iç tablo meta veriler döndürür.

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

J.Sorgu bildirim abonelikleri iç tablo meta veriler döndürür.

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.Geri kayma dizinler için iç tablo meta veriler

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