Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
Le tabelle di base di sistema sono le tabelle sottostanti in cui vengono effettivamente archiviati i metadati per un database specifico. Il master database è speciale in questo senso perché contiene alcune tabelle aggiuntive che non sono presenti in nessun altro database. Queste tabelle contengono metadati persistenti il cui ambito è esteso all'intero server.
Importante
Le tabelle di base di sistema vengono usate solo all'interno del motore di database di SQL Server e non sono per uso generico dei clienti. Le tabelle di base di sistema sono soggette a modifiche e la compatibilità non è garantita.
Metadati della tabella di base di sistema
Un utente autorizzato che dispone CONTROLdell'autorizzazione , ALTERo VIEW DEFINITION per un database può visualizzare i metadati della tabella di base di sistema nella vista del sys.objects catalogo. L'utente autorizzato può anche risolvere i nomi e gli ID oggetto delle tabelle di base di sistema usando funzioni predefinite, ad esempio OBJECT_NAME e OBJECT_ID.
Per eseguire l'associazione a una tabella di base di sistema, un utente deve connettersi all'istanza di SQL Server usando la connessione amministrativa dedicata. Il tentativo di eseguire una SELECT query da una tabella di base di sistema senza connettersi tramite applicazione livello dati genera un errore.
Importante
L'accesso alle tabelle di base di sistema tramite applicazione livello dati è progettato solo per il personale Microsoft e non è uno scenario di clienti supportato.
Tabelle di base di sistema
La tabella seguente elenca e descrive ogni tabella di base di sistema in SQL Server.
| Tabella di base | Descrizione |
|---|---|
sys.sysschobjs |
Esiste in ogni database. Ogni riga rappresenta un oggetto del database. |
sys.sysbinobjs |
Esiste in ogni database. Contiene una riga per ogni entità Service Broker del database. Le entità di Service Broker includono gli oggetti seguenti: Tipo di messaggio Contratto di servizio Servizio I nomi e i tipi utilizzano regole di confronto binarie predefinite. |
sys.sysclsobjs |
Esiste in ogni database. Contiene una riga per ogni entità classificata che condivide le stesse proprietà comuni che includono gli oggetti seguenti: Assemblaggio Dispositivo di backup Catalogo full-text Funzione di partizione Schema di partizione Gruppo di file Chiave offuscata Diagramma |
sys.sysnsobjs |
Esiste in ogni database. Contiene una riga per ogni entità dell'ambito dello spazio dei nomi. Questa tabella viene utilizzata per archiviare le entità di raccolta XML. |
sys.syscolpars |
Esiste in ogni database. Contiene una riga per ogni colonna di una tabella, vista o funzione con valori di tabella. Contiene anche righe per ogni parametro di una procedura o funzione. |
sys.systypedsubobjs |
Esiste in ogni database. Contiene una riga per ogni sottoentità tipizzata. In questa categoria rientrano solo i parametri relativi alla funzione di partizione. |
sys.sysidxstats |
Esiste in ogni database. Contiene una riga per ogni indice o statistica di tabelle e viste indicizzate Nota: Ogni indice (ad eccezione dell'heap) è associato a una statistica con lo stesso nome dell'indice. |
sys.sysiscols |
Esiste in ogni database. Contiene una riga per ogni indice persistente e colonna delle statistiche. |
sys.sysscalartypes |
Esiste in ogni database. Contiene una riga per ogni tipo di sistema o tipo definito dall'utente. |
sys.sysdbreg |
Esiste solo nel master database. Contiene una riga per ogni database registrato. |
sys.sysxsrvs |
Esiste solo nel master database. Contiene una riga per ogni server locale, collegato o remoto. |
sys.sysrmtlgns |
Questa tabella di base di sistema esiste solo nel master database. Contiene una riga per ogni mapping di account di accesso remoto. Viene utilizzata per eseguire il mapping tra gli account di accesso in ingresso che risultano provenire da un server corrispondente e un account di accesso locale effettivo. |
sys.syslnklgns |
Esiste solo nel master database. Contiene una riga per ogni mapping di account di accesso collegato. I mapping di account di accesso collegati vengono utilizzati da chiamate di procedure remote e query distribuite che provengono da un server locale a un server collegato corrispondente. |
sys.sysxlgns |
Esiste solo nel master database. Contiene una riga per ogni entità di server. |
sys.sysdbfiles |
Esiste in ogni database. Se la colonna dbid è zero, la riga rappresenta un file appartenente a questo database.
master Nel database la colonna dbid può essere diversa da zero. In questo caso, la riga rappresenta un file master. |
sys.sysusermsg |
Esiste solo nel master database. Ogni riga rappresenta un messaggio di errore definito dall'utente. |
sys.sysprivs |
Esiste in ogni database. Contiene una riga per ogni database o autorizzazione a livello di server. Nota: le autorizzazioni a livello di server vengono archiviate nel master database. |
sys.sysowners |
Esiste in ogni database. Ogni riga rappresenta un'entità di database. |
sys.sysobjkeycrypts |
Esiste in ogni database. Contiene una riga per ogni chiave simmetrica, crittografia o proprietà crittografica associata a un oggetto. |
sys.syscerts |
Esiste in ogni database. Contiene una riga per ogni certificato di un database. |
sys.sysasymkeys |
Esiste in ogni database. Ogni riga rappresenta una chiave asimmetrica. |
sys.ftinds |
Esiste in ogni database. Contiene una riga per ogni indice full-text del database. |
sys.sysxprops |
Esiste in ogni database. Contiene una riga per ogni proprietà estesa. |
sys.sysallocunits |
Esiste in ogni database. Contiene una riga per ogni unità di allocazione di archiviazione. |
sys.sysrowsets |
Esiste in ogni database. Contiene una riga per ogni set di righe della partizione per un indice o un heap. |
sys.sysrowsetrefs |
Esiste in ogni database. Contiene una riga per ogni riferimento di indice a un set di righe. |
sys.syslogshippers |
Esiste solo nel master database. Contiene una riga per ogni server di controllo del mirroring del database. |
sys.sysremsvcbinds |
Esiste in ogni database. Contiene una riga per ogni associazione al servizio remoto. |
sys.sysconvgroup |
Esiste in ogni database. Contiene una riga per ogni istanza di servizio di Service Broker. |
sys.sysxmitqueue |
Esiste in ogni database. Contiene una riga per ogni coda di trasmissione di Service Broker. |
sys.sysdesend |
Esiste in ogni database. Contiene una riga per ogni endpoint di invio di una conversazione di Service Broker. |
sys.sysdercv |
Esiste in ogni database. Contiene una riga per ogni endpoint di ricezione di una conversazione di Service Broker. |
sys.sysendpts |
Esiste solo nel master database. Contiene una riga per ogni endpoint creato nel server. |
sys.syswebmethods |
Esiste solo nel master database. Contiene una riga per ogni metodo SOAP definito in un endpoint HTTP attivato per SOAP creato nel server. |
sys.sysqnames |
Esiste in ogni database. Contiene una riga per ogni spazio dei nomi o nome completo a un token ID di 4 byte. |
sys.sysxmlcomponent |
Esiste in ogni database. Ogni riga rappresenta un componente di XML Schema. |
sys.sysxmlfacet |
Esiste in ogni database. Contiene una riga per ogni facet XML (restrizione) di definizione del tipo XML. |
sys.sysxmlplacement |
Esiste in ogni database. Contiene una riga per ogni posizione XML dei componenti XML. |
sys.syssingleobjrefs |
Esiste in ogni database. Contiene una riga per ogni riferimento N-a-1 generale. |
sys.sysmultiobjrefs |
Esiste in ogni database. Contiene una riga per ogni riferimento N-a-N generale. |
sys.sysobjvalues |
Esiste in ogni database. Contiene una riga per ogni proprietà del valore generale di un'entità. |
sys.sysguidrefs |
Esiste in ogni database. Contiene una riga per ogni riferimento a ID classificati GUID. |
Aggiornare le tabelle di base di sistema
È possibile visualizzare i dati nelle tabelle di sistema tramite le viste del catalogo di sistema. Per aggiornare i metadati in una tabella di base di sistema, usare l'interfaccia Transact-SQL appropriata, ad esempio istruzioni DDL. Non è possibile aggiornare manualmente le tabelle di sistema. SQL Server segnala i messaggi seguenti quando si eseguono aggiornamenti diretti alle tabelle di sistema.
Una tabella di sistema viene aggiornata manualmente
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.
Avviare un database con una tabella di sistema aggiornata manualmente
Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.
Eseguire il comando DBCC_CHECKDB dopo l'aggiornamento manuale di una tabella di sistema
Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.
Se si eseguono aggiornamenti manuali a una tabella di sistema e si verifica un problema, potrebbe essere richiesto di eseguire il ripristino da un backup o copiare i dati dal database interessato a un nuovo database. Per altre informazioni, vedere Azioni utente per MSSQLSERVER_8992.