Wewnętrzny tabel
SQL Server automatycznie tworzy tabele wewnętrznej do obsługi następujących funkcji:
Podstawowy indeksy XML
Indeksy przestrzenne
Service Broker
Kwerendy powiadomień
Śledzenie zmian
Wewnętrzny tabele są efekt uboczny innego użytkownika akcja.Na przykład po utworzeniu indeks podstawowy XML SQL Server automatycznie tworzy tabela wewnętrzną, aby utrwalić shredded XML dokumentu danych.Tablice wewnętrzne pojawiają się w sys schemat każdej bazy danych i mieć unikatowy, nazwy generowane przez system, wskazujące ich funkcja, na przykład xml_index_nodes_2021582240_32001 lub queue_messages_1977058079.
Wewnętrzny tabel nie zawierają danych dostępne dla użytkownika, a ich schematu są stałe i unalterable.Nie można odwołać wewnętrznej tabela nazw w Transact-SQL instrukcji.Na przykład, nie można wykonać instrukcja, takich jak SELECT * FROM <sys.internal_table_name>.Jednakże, mogą wysyłać kwerendy widoki wykazu w celu wyświetlenia metadane wewnętrznego tabel.
Wyświetlanie metadanych wewnętrznego tabeli
Można wyświetlić metadane skojarzone z wewnętrznych tabel za pomocą sys.internal_tables wykazu widoku.W tym widoku można wyświetlać schemat wewnętrznych tabel.Ponieważ wewnętrzna tabele mają wiele takie same charakterystyki jak tabele użytkowników sys.internal_tables widok dziedziczy kolumny z sys.objects wykazu widoku i typu "IT".Zgodnie z tabelami użytkownika jest widoczna kolumna metadane wewnętrznego tabel sys.columns jest widoczny w widoku wykazu i metadane dla indeksów wygenerowane przez system i statystyki dotyczące tabel wewnętrznego sys.indexes i sys.stats widoki wykazu.
Przystępując do innych widoki wykazu można także uzyskać informacje dotyczące przydzielania i wykorzystania przestrzeni.Zobacz "Wewnętrznej pamięci masowej tabeli" w dalszej części tego tematu.
Na poniższej ilustracji przedstawiono model danych katalogu najwyższego poziom.
Uprawnienia do wyświetlania metadanych wewnętrznego tabeli
Aby wyświetlić metadane wewnętrznej tabela w bazie danych, niezbędny jest jeden z następujących uprawnień i członkostwa grup:
Uprawnienie Kontrola serwera.
Uprawnienie Kontrola w bazie danych.
Członkostwo w db_owner lub sysadmin grupy.
Użytkownik, który można wyświetlić obiekt nadrzędnego (XML lub indeks przestrzenny lub kolejki), można wyświetlić tabela wewnętrzną dla tego obiekt.
Wyświetlanie metadanych indeksu XML
Ilustracja przedstawia strukturę metadane dla wewnętrznej tabela na indeks XML.
Aby zrozumieć relacje widoku wykazu na ilustracji, zakładać, że indeks podstawowy XML Xp jest tworzony w tabela t.Metadane tabela jest w sys.tables wykazu widoku i metadanych dla indeksu XML jest w sys.xml_indexes wykazu widoku.metadane dla wewnętrznej tabela Ti utworzone przez SQL Server do danych znajduje się w indeksie XML utrwalania sys.internal_tables widok.
Znaleźć relacji między wewnętrznej tabela Ti i tabela użytkownika t, możesz łączyć parent_id kolumna sys.internal_tables widok do object_id kolumna sys.tables widok.Aby znaleźć relacji między wewnętrznej tabela Ti i indeks XML Xp, można łączyć parent_id i parent_minor_id kolumny sys.internal_tables do object_id i index_id kolumny sys.xml_indexes.Zobacz przykład poniżej G.
Wyświetlanie metadanych indeks przestrzenny
Metadane indeksy przestrzenne odpowiada głównie metadanych XML indeksy.Różnice są używające indeksy przestrzenne sys.spatial_indexes zamiast sys.xml_indexes i że trzeba użyć sys.spatial_index_tessellationsdo wyświetlania parametrów przestrzennej przestrzennej indeksu.
Ilustracja przedstawia strukturę metadane dla wewnętrznej tabela na przestrzennej indeksu.
Aby zrozumieć relacje widoku wykazu na ilustracji, zakładać, że indeks przestrzenny, Si, jest tworzony w tabela t.Metadane tabela jest w sys.tables wykazu widoku i metadanych dla indeksu przestrzennej jest w sys.spatial_indexes wykazu widoku i sys.spatial_index_tessellations wykazu widoku.Metadane dla wewnętrznej tabela Ti, utworzony przez SQL Server pozostać dane przestrzenne indeksu jest sys.internal_tables widok.
Znaleźć relacji między wewnętrznej tabela Ti i tabela użytkownika t, możesz łączyć parent_id kolumna sys.internal_tables widok do object_id kolumna sys.tables widok.Aby znaleźć relacji między wewnętrznej tabela Ti i indeks przestrzenny Si, można łączyć parent_id i parent_minor_id kolumny sys.internal_tables do object_id i index_id kolumny sys.spatial_indexes.Aby uzyskać więcej informacji zobacz przykład L, w dalszej części tego tematu.
Wyświetlanie Service Broker metadanych
Ilustracja przedstawia strukturę metadane dla wewnętrznej tabela w kolejce Service Broker.Service Broker wiadomości, powiadomień kwerendy i zdarzenie kolejki Service Broker za pomocą powiadomienia.Ponadto funkcja Service Broker także używa wewnętrznej tabela do przechowywania informacji o wszystkich usług Service Broker we wszystkich bazach danych.Tabela wewnętrznego należy tempdb systemowej bazy danych.
Wyświetlanie kwerendy powiadomień metadanych
Na następującej ilustracji pokazano strukturę metadane dla wewnętrznej tabela na powiadomienie kwerendy subskrypcja.Wewnętrzny tabele są używane do przechowywania parametrów kwerendy powiadomienie subskrypcja.
Wewnętrznej pamięci masowej w tabeli
Wewnętrzny tabele są umieszczane na tym samym grupa plików jako obiekt nadrzędnego.Można użyć kwerendy wykazu przedstawione w f przykład poniżej numer strony wewnętrzne tabel zajmują w wierszu poza wiersz i dużego obiektu (LOB) danych.
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 zużycie pamięci.
Strony, które są używane przez wewnętrzne tabele indeksy, indeksy przestrzenne i indeksy pełnotekstowe XML znajdują się w index_size kolumna.Po określeniu tabela lub nazwie indeksowany widok stron dla indeksów XML, indeksy przestrzenne i indeksy pełnotekstowe dla tego obiektu są zawarte w kolumnach zarezerwowane i index_size.
Przykłady
Następujące przykłady przedstawiają sposób kwerendy metadane wewnętrznej tabela przy użyciu widoki wykazu.
A.Pokaż tabele wewnętrznego, dziedziczące kolumny widoku wykazu sys.objects
SELECT * FROM sys.objects WHERE type = 'IT';
B.Zwraca wszystkie metadane wewnętrznej tabela (w tym, które są dziedziczone z sys.objects)
SELECT * FROM sys.internal_tables;
C.Zwraca kolumna wewnętrznej tabela 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.Indeksy tabela wewnętrznych powrót
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ę wewnętrznej tabela
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 wewnętrzną tabela partycji i jednostka alokacji informacji
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 metadane wewnętrznej tabela indeksów 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 Service 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 usługi Service Broker
SELECT *
FROM tempdb.sys.internal_tables
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';
GO
J.Zwraca tabela wewnętrzną metadane 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';
K.Zwraca metadane wewnętrznej tabela indeksów przestrzennych
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