Internal Tables
SQL Server automatycznie tworzy tabele wewnętrznej do obsługi następujących funkcji:
Podstawowy indeksów XML
Usuwa określony serwer miejsce docelowe.
Service Broker
Kwerendy powiadomień
IsAnsiNullsEnabled
Wewnętrzny tabele są efektem ubocznym z inna czynność użytkownika.Na przykład podczas tworzenia indeksu głównego XML SQL Server powoduje automatyczne utworzenie tabela programu wewnętrzny, aby utrwalić shredded dane XML w dokumencie. Wewnętrzny tabele zostaną wyświetlone w sys schemat każdej bazy danych i mieć unikatowy, wygenerowane przez system nazw, które wskazują swojej funkcja, na przykład, xml_index_nodes_2021582240_32001 or queue_messages_1977058079.
Wewnętrzny tabel nie zawierają danych dla użytkownika, a ich schematu są stałe i unalterable.Nie można odwoływać się do nazwy tabela wewnętrznej w Transact-SQL instrukcje. Na przykład, nie można wykonać instrukcja, takich jak SELECT * FROM <sys.internal_table_name>. Jednak mogą wysyłać kwerendy katalogu widokami, aby zobaczyć metadane wewnętrznego tabel.
Przeglądanie wewnętrznych metadane tabela
Można przeglądać metadane skojarzone z tabelami wewnętrznymi przy użyciu sys.internal_tables Służy do wyświetlania katalogu. W tym widoku można wyświetlać schemat wewnętrznych tabel.Ponieważ wewnętrzny tabele mają wiele z tych samych właściwościach jako tabele użytkownika sys.internal_tables widoku dziedziczy kolumnsys.Objects katalogu widoku i typu "IT".Zgodnie z tabelami użytkownika jest widoczna kolumna metadanych dla wewnętrznego tabel sys.Columns wykazu widoku i metadane dla generowanych przez system indeksy i dane statystyczne dotyczące tabel wewnętrznego jest widoczna w sys.Indexes and sys.stats widoki wykazu.
Przystępując do innych widoki wykazu, również można uzyskać informacji o alokacji i wykorzystanie miejsca na.Zobacz temat "Pamięć wewnętrzna tabela" w dalszej części tego tematu.
Na poniższej ilustracji przedstawiono modelu danych katalogu najwyższego poziom.
Uprawnienia, aby wyświetlić wewnętrzny metadane tabela
Aby wyświetlić tabela wewnętrzną metadane w bazie danych, niezbędny jest jeden z następujących uprawnień i członkostwa grup:
Uprawnienie Kontrola SERVER.
Uprawnienie Kontrola w bazie danych.
Członkostwo w grupie db_owner or sysadmin grupy.
Użytkownik, który można wyświetlić obiektu nadrzędnego (XML lub przestrzennej indeksu lub kolejki) można wyświetlić tabela wewnętrzną dla tego obiektu.
Wyświetlanie XML metadane indeksu
Na następującej ilustracji pokazano strukturę metadane dla tabela wewnętrznej na indeks XML.
Aby zrozumieć relacje widoku wykazu pokazany na rysunku, założono indeksu głównego XML XP Utworzono tabela T.Metadane tabela są w sys.Tables jest wykazu widoku i metadanych dla indeksu XMLsys.xml_indexes Służy do wyświetlania katalogu. Metadane dla tabela wewnętrznej Ti utworzone przez SQL Server Aby utrwalić dane znajdują się w indeksie XML sys.internal_tables widoku.
Aby znaleźć relacji między wewnętrznymi tabela Ti a tabela użytkownikówT, you can łączyć the parent_id kolumnasys.internal_tables widokuobject_id kolumnasys.Tables view.Aby znaleźć relacji między wewnętrznymi tabela Ti i XML indeksu XP, można dołączyć parent_id and parent_minor_id kolumnsys.internal_tables to the object_id and index_id kolumny sys.xml_indexes.Zobacz przykład poniżej K.
Wyświetlanie metadane indeksu przestrzenny
Metadane przestrzennej indeksów przeważnie jest równoznaczne z metadanych XML indeksów.Różnice są których używane są indeksy przestrzenny sys.spatial_indexes zamiast sys.xml_indexes i trzeba użyć sys.spatial_index_tessellations, aby wyświetlić parametry przestrzennej przestrzennej indeksu.
Na następującej ilustracji pokazano strukturę metadane dla tabela wewnętrznej na przestrzennej indeksu.
Aby zrozumieć relacje widoku wykazu pokazany na rysunku, założono przestrzennej indeksu SI, jest tworzony w tabela T.Metadane tabela są w sys.Tables wykazu widoku i metadanych dla indeksu przestrzennej znajduje się w sys.spatial_indexes wyświetlanie katalogu a sys.spatial_index_tessellations Służy do wyświetlania katalogu. Metadane dla tabela wewnętrznej Ti, utworzony przez SQL Server Aby utrwalić danych przestrzennej indeksu w sys.internal_tables widoku.
Aby znaleźć relacji między wewnętrznymi tabela Ti a tabela użytkownikówT, you can łączyć the parent_id kolumnasys.internal_tables widokuobject_id kolumnasys.Tables view.Aby znaleźć relacji między wewnętrznymi tabela Ti i indeks przestrzennej SI, można dołączyć parent_id and parent_minor_id kolumnsys.internal_tables to the object_id and index_id kolumny sys.spatial_indexes.Aby uzyskać więcej informacji zobacz przykład L, w dalszej części tego tematu.
Wyświetlanie usługa Broker metadane
Na następującej ilustracji pokazano strukturę metadane dla tabela wewnętrznej w kolejce usługa Broker.usługa Broker wiadomości, powiadomień kwerendy i powiadomień o zdarzeniach za pomocą kolejki usługa Broker.Ponadto funkcja usługa Broker także wykorzystuje do wewnętrznej tabela do przechowywania informacji o wszystkich usług usługa Broker we wszystkich bazach danych.W tej tabela wewnętrzny znajduje się w tempdb systemowej bazy danych.
Wyświetlanie kwerendy powiadomienie metadane
Na następującej ilustracji pokazano strukturę metadane dla tabela wewnętrznej w subskrypcja powiadomienie kwerendy.Wewnętrzny tabele są używane do przechowywania parametrów subskrypcja powiadomienie kwerendy.
Wewnętrzna tabela pamięci masowej
Wewnętrzny tabel są umieszczane w tej samej grupa plików jako jednostkę nadrzędną.Można użyć kwerendy wykazu wyświetlane w F przykład poniżej, aby zwrócić liczbę stron zajmują wewnętrznego tabel w wierszu się od wiersza, a dane dużych obiektów (LOB).
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:
Po określeniu nazwy kolejki odwołuje się do tabela podstawowej wewnętrznego skojarzony z kolejką i zgłaszane jest zużycie pamięci masowej.
Strony, które są używane przez wewnętrznych tabel indeksów, przestrzennej indeksy i indeksy pełnotekstowe XML są uwzględniane w index_size kolumna.Po określeniu tabela lub nazwa widok indeksowany stron dla indeksów, przestrzennej indeksy i indeksy pełnotekstowe dla tego obiektu XML znajdują się w kolumnach zarezerwowane and index_size.
Przykłady
W poniższych przykładach pokazano, jak do kwerendy tabela wewnętrzną metadane za pomocą widoki wykazu.
A.Pokaż wewnętrzne tabel, które dziedziczą kolumny z widoku sys.objects wykazu
SELECT * FROM sys.objects WHERE type = 'IT';
B.Zwraca wszystkie metadane tabela wewnętrzną (w tym tych, które jest dziedziczona z sys.objects)
SELECT * FROM sys.internal_tables;
C.Zwrot wewnętrznej tabeli kolumna s i kolumna typów danych
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.Zwraca wewnętrzny tabela indeksów
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.Zwraca statystykę tabela wewnętrzną
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.Zwraca jednostki informacji o wewnętrznym tabela partycji i alokacji
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.Zwraca tabela wewnętrzną metadane dla indeksu XML
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.Zwraca tabela wewnętrzną metadane dla kolejek usługa Broker
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.Zwraca tabela wewnętrzną metadane dla wszystkich usług usługa Broker
SELECT *
FROM tempdb.sys.internal_tables
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';
GO
J.Zwraca tabela wewnętrzną metadane dla subskrypcji powiadomienie kwerendy
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';
Wiersze mogą być tak szerokie, czasami dany operator nie może przetworzyć w wierszu.Zwraca tabela wewnętrzną metadane dla indeksów przestrzenny
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
See Also