Udostępnij za pomocą


Tabele podstawowe systemu

Dotyczy:SQL ServerAzure SQL Managed Instance

Tabele podstawowe systemu to tabele bazowe, które rzeczywiście przechowują metadane dla określonej bazy danych. Baza master danych jest specjalna w tym zakresie, ponieważ zawiera dodatkowe tabele, które nie znajdują się w żadnej z innych baz danych. Te tabele zawierają utrwalone metadane, które mają zakres całego serwera.

Ważne

Tabele podstawowe systemu są używane tylko w a aparatze bazy danych programu SQL Server i nie są przeznaczone do użytku ogólnego klienta. Tabele podstawowe systemu podlegają zmianie, a zgodność nie jest gwarantowana.

Metadane tabeli podstawowej systemu

Grantee, który ma CONTROLuprawnienia , ALTERlub VIEW DEFINITION w bazie danych, może wyświetlać metadane tabeli podstawowej systemu w sys.objects widoku wykazu. Grantee może również rozpoznawać nazwy i identyfikatory obiektów tabel podstawowych systemu przy użyciu wbudowanych funkcji, takich jak OBJECT_NAME i OBJECT_ID.

Aby powiązać tabelę podstawową systemu, użytkownik musi nawiązać połączenie z wystąpieniem programu SQL Server przy użyciu dedykowanego połączenia administratora (DAC). Próba wykonania SELECT zapytania z tabeli podstawowej systemu bez nawiązywania połączenia przy użyciu funkcji DAC zgłasza błąd.

Ważne

Dostęp do tabel bazowych systemu przy użyciu usługi DAC jest przeznaczony tylko dla personelu firmy Microsoft i nie jest obsługiwanym scenariuszem klienta.

Tabele podstawowe systemu

W poniższej tabeli wymieniono i opisano każdą tabelę podstawową systemu w programie SQL Server.

Tabela podstawowa Opis
sys.sysschobjs Istnieje w każdej bazie danych. Każdy wiersz reprezentuje obiekt w bazie danych.
sys.sysbinobjs Istnieje w każdej bazie danych. Zawiera wiersz dla każdej jednostki usługi Service Broker w bazie danych. Jednostki usługi Service Broker obejmują następujące obiekty:

Typ komunikatu
Kontrakt usługi
Usługa
Nazwy i typy używają sortowania binarnego, które jest stałe.
sys.sysclsobjs Istnieje w każdej bazie danych. Zawiera wiersz dla każdej niejawnej jednostki, która ma te same wspólne właściwości, które obejmują następujące obiekty:

Zgromadzenie
Urządzenie kopii zapasowej
Wykaz pełnotekstowy
Funkcja partition
Schemat partycji
Grupa plików
Klucz zaciemniania
Schemat
sys.sysnsobjs Istnieje w każdej bazie danych. Zawiera wiersz dla każdej jednostki o zakresie przestrzeni nazw. Ta tabela służy do przechowywania jednostek kolekcji XML.
sys.syscolpars Istnieje w każdej bazie danych. Zawiera wiersz dla każdej kolumny w funkcji tabeli, widoku lub tabeli. Zawiera również wiersze dla każdego parametru procedury lub funkcji.
sys.systypedsubobjs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego typu podentity. Tylko parametry funkcji partycji należą do tej kategorii.
sys.sysidxstats Istnieje w każdej bazie danych. Zawiera wiersz dla każdego indeksu lub statystyki dla tabel i widoków indeksowanych

Nuta: Każdy indeks (z wyjątkiem sterty) jest skojarzony ze statystyką, która ma taką samą nazwę jak indeks.
sys.sysiscols Istnieje w każdej bazie danych. Zawiera wiersz dla każdego utrwalonego indeksu i kolumny statystyk.
sys.sysscalartypes Istnieje w każdej bazie danych. Zawiera wiersz dla każdego typu zdefiniowanego przez użytkownika lub systemu.
sys.sysdbreg Istnieje tylko w master bazie danych. Zawiera wiersz dla każdej zarejestrowanej bazy danych.
sys.sysxsrvs Istnieje tylko w master bazie danych. Zawiera wiersz dla każdego lokalnego, połączonego lub zdalnego serwera.
sys.sysrmtlgns Ta tabela podstawowa master systemu istnieje tylko w bazie danych. Zawiera wiersz dla każdego mapowania logowania zdalnego. Służy do mapowania przychodzących logowań, które twierdzą, że pochodzą z odpowiedniego serwera do rzeczywistego lokalnego logowania.
sys.syslnklgns Istnieje tylko w master bazie danych. Zawiera wiersz dla każdego połączonego mapowania logowania. Połączone mapowania logowania są używane przez zdalne wywołania procedur i rozproszone zapytania, które pochodzą z serwera lokalnego do odpowiedniego serwera połączonego.
sys.sysxlgns Istnieje tylko w master bazie danych. Zawiera wiersz dla każdego podmiotu zabezpieczeń serwera.
sys.sysdbfiles Istnieje w każdej bazie danych. Jeśli kolumna dbid ma wartość zero, wiersz reprezentuje plik, który należy do tej bazy danych. master W bazie danych kolumna dbid może być niezerowa. W takim przypadku wiersz reprezentuje plik główny.
sys.sysusermsg Istnieje tylko w master bazie danych. Każdy wiersz reprezentuje komunikat o błędzie zdefiniowany przez użytkownika.
sys.sysprivs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego uprawnienia na poziomie bazy danych lub serwera.

Uwaga: uprawnienia na poziomie serwera są przechowywane w master bazie danych.
sys.sysowners Istnieje w każdej bazie danych. Każdy wiersz reprezentuje jednostkę bazy danych.
sys.sysobjkeycrypts Istnieje w każdej bazie danych. Zawiera wiersz dla każdego klucza symetrycznego, szyfrowania lub właściwości kryptograficznych skojarzonej z obiektem.
sys.syscerts Istnieje w każdej bazie danych. Zawiera wiersz dla każdego certyfikatu w bazie danych.
sys.sysasymkeys Istnieje w każdej bazie danych. Każdy wiersz reprezentuje klucz asymetryczny.
sys.ftinds Istnieje w każdej bazie danych. Zawiera wiersz dla każdego indeksu pełnotekstowego w bazie danych.
sys.sysxprops Istnieje w każdej bazie danych. Zawiera wiersz dla każdej właściwości rozszerzonej.
sys.sysallocunits Istnieje w każdej bazie danych. Zawiera wiersz dla każdej jednostki alokacji magazynu.
sys.sysrowsets Istnieje w każdej bazie danych. Zawiera wiersz dla każdego zestawu wierszy partycji dla indeksu lub sterta.
sys.sysrowsetrefs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego indeksu do odwołania do zestawu wierszy.
sys.syslogshippers Istnieje tylko w master bazie danych. Zawiera wiersz dla każdego monitora dublowania bazy danych.
sys.sysremsvcbinds Istnieje w każdej bazie danych. Zawiera wiersz dla każdego powiązania usługi zdalnej.
sys.sysconvgroup Istnieje w każdej bazie danych. Zawiera wiersz dla każdego wystąpienia usługi w usłudze Service Broker.
sys.sysxmitqueue Istnieje w każdej bazie danych. Zawiera wiersz dla każdej kolejki transmisji usługi Service Broker.
sys.sysdesend Istnieje w każdej bazie danych. Zawiera wiersz dla każdego wysyłającego punktu końcowego konwersacji usługi Service Broker.
sys.sysdercv Istnieje w każdej bazie danych. Zawiera wiersz dla każdego odbierającego punktu końcowego konwersacji usługi Service Broker.
sys.sysendpts Istnieje tylko w master bazie danych. Zawiera wiersz dla każdego punktu końcowego utworzonego na serwerze.
sys.syswebmethods Istnieje tylko w master bazie danych. Zawiera wiersz dla każdej metody PROTOKOŁU SOAP zdefiniowanej w punkcie końcowym HTTP obsługującym protokół SOAP, który jest tworzony na serwerze.
sys.sysqnames Istnieje w każdej bazie danych. Zawiera wiersz dla każdej przestrzeni nazw lub kwalifikowanej nazwy do tokenu identyfikatora 4-bajtowego.
sys.sysxmlcomponent Istnieje w każdej bazie danych. Każdy wiersz reprezentuje składnik schematu XML.
sys.sysxmlfacet Istnieje w każdej bazie danych. Zawiera wiersz dla każdego aspektu XML (ograniczenie) definicji typu XML.
sys.sysxmlplacement Istnieje w każdej bazie danych. Zawiera wiersz dla każdego umieszczania XML dla składników XML.
sys.syssingleobjrefs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego ogólnego odwołania N-do-1.
sys.sysmultiobjrefs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego ogólnego odwołania N do N.
sys.sysobjvalues Istnieje w każdej bazie danych. Zawiera wiersz dla każdej właściwości ogólnej wartości jednostki.
sys.sysguidrefs Istnieje w każdej bazie danych. Zawiera wiersz dla każdego odwołania identyfikatora sklasyfikowanego identyfikatora GUID.

Aktualizowanie tabel bazowych systemu

Dane można wyświetlić w tabelach systemowych za pomocą widoków wykazu systemu. Aby zaktualizować metadane w tabeli podstawowej systemu, użyj odpowiedniego interfejsu Transact-SQL (na przykład instrukcji DDL). Nie można ręcznie aktualizować tabel systemowych. Program SQL Server zgłasza następujące komunikaty podczas wykonywania bezpośrednich aktualizacji tabel systemowych.

Tabela systemowa jest aktualizowana ręcznie

Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.

Uruchamianie bazy danych przy użyciu tabeli systemowej, która została ręcznie zaktualizowana

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Wykonaj polecenie DBCC_CHECKDB po ręcznej aktualizacji tabeli systemowej

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Jeśli wykonasz ręczne aktualizacje tabeli systemowej i wystąpi problem, może zostać wyświetlony monit o przywrócenie z kopii zapasowej lub skopiowanie danych z bazy danych, której dotyczy problem, do nowej bazy danych. Aby uzyskać więcej informacji, zobacz akcje użytkownika dla MSSQLSERVER_8992.