Partage via


Tables de base système

S’applique à : SQL Server Azure SQL Managed Instance

Les tables de base système sont des tables sous-jacentes qui stockent les métadonnées pour une base de données spécifique. La base de données master est spéciale à cet égard, car elle contient des tables supplémentaires qui ne sont trouvées dans aucune des autres bases de données. Ces tables contiennent des métadonnées persistantes dont l'étendue couvre le serveur.

Important

Les tables de base système sont utilisées uniquement dans le Moteur de base de données SQL Server et ne sont pas destinées à une utilisation générale du client. Elles peuvent faire l'objet de modifications et la compatibilité n'est pas garantie.

Métadonnées des tables de base système

Un bénéficiaire disposant d’une autorisation CONTROL, ALTER ou VIEW DEFINITION sur une base de données peut voir les métadonnées de table de base système dans l’affichage catalogue sys.objects . Le bénéficiaire peut également résoudre les noms et les ID d’objet des tables de base système à l’aide de fonctions intégrées telles que OBJECT_NAME et OBJECT_ID.

Pour établir une liaison à une table de base système, un utilisateur doit se connecter à l’instance de SQL Server à l’aide de la connexion d’administrateur dédiée (DAC). Une tentative d'exécution d'une requête SELECT à partir d'une table de base système sans connexion via la DAC provoque une erreur.

Important

L’accès aux tables de base système à l’aide de DAC est conçu uniquement pour le personnel Microsoft, et ce n’est pas un scénario client pris en charge.

Tables de base système

Le tableau suivant répertorie et décrit chaque table de base système dans SQL Server.

Table de base Description
sys.sysschobjs Existe dans toutes les bases de données. Chaque ligne représente un objet de la base de données.
sys.sysbinobjs Existe dans toutes les bases de données. Contient une ligne pour chaque entité de Service Broker dans la base de données. Les entités de Service Broker incluent les éléments suivants :

Type de message

Contrat de service

Service

Les noms et les types utilisent un classement binaire fixe.
sys.sysclsobjs Existe dans toutes les bases de données. Contient une ligne pour chaque entité classifiée qui partage les mêmes propriétés communes qui incluent les éléments suivants :

Assembly

unité de sauvegarde

Catalogue de texte intégral

Fonction de partition

Schéma de partition

Groupe de fichiers

Clé d’obfuscation

schéma
sys.sysnsobjs Existe dans toutes les bases de données. Contient une ligne pour chaque entité de l'étendue de l'espace de noms. Cette table est utilisée pour le stockage des entités de collection XML.
sys.syscolpars Existe dans toutes les bases de données. Contient une ligne pour chaque colonne de table, chaque vue ou chaque fonction table. Contient également des lignes pour chaque paramètre d'une procédure ou d'une fonction.
sys.systypedsubobjs Existe dans toutes les bases de données. Contient une ligne pour chaque sous-entité typée. Seuls les paramètres de la fonction de partition appartiennent à cette catégorie.
sys.sysidxstats Existe dans toutes les bases de données. Contient une ligne pour chaque index ou statistique pour les tables et les vues indexées

Remarque : chaque index (à l’exception du tas) est associé à une statistique portant le même nom que l’index.
sys.sysiscols Existe dans toutes les bases de données. Contient une ligne pour chaque colonne d'index et de statistiques persistante.
sys.sysscalartypes Existe dans toutes les bases de données. Contient une ligne pour chaque type défini par l'utilisateur ou chaque type système.
sys.sysdbreg Existe uniquement dans la base de données master . Contient une ligne pour chaque base de données inscrite.
sys.sysxsrvs Existe uniquement dans la base de données master . Contient une ligne pour chaque serveur local, lié ou distant.
sys.sysrmtlgns Cette table de base système existe uniquement dans la base de données master . Contient une ligne pour chaque mappage d'ouverture de session distante. Cela est utilisé pour mapper les connexions entrantes issues d'un serveur correspondant et accédant à une connexion locale.
sys.syslnklgns Existe uniquement dans la base de données master . Contient une ligne pour chaque mappage de connexion liée. Les mappages de connexions liées sont utilisés par des appels de procédure distante et par des requêtes distribuées qui émanent d'un serveur local vers un serveur lié correspondant.
sys.sysxlgns Existe uniquement dans la base de données master . Contient une ligne pour chaque principal de serveur.
sys.sysdbfiles Existe dans toutes les bases de données. Si la colonne dbid est égale à zéro, la ligne représente un fichier qui appartient à cette base de données. Dans la base de données master, le dbid de colonne peut être différent de zéro. Lorsque c'est le cas, la ligne représente un fichier maître.
sys.sysusermsg Existe uniquement dans la base de données master . Chaque ligne représente un message d'erreur défini par l'utilisateur.
sys.sysprivs Existe dans toutes les bases de données. Contient une ligne pour chaque autorisation de niveau base de données ou serveur.

Remarque : les autorisations au niveau du serveur sont stockées dans la base de données master .
sys.sysowners Existe dans toutes les bases de données. Chaque ligne représente un principal de base de données.
sys.sysobjkeycrypts Existe dans toutes les bases de données. Contient une ligne pour chaque clé symétrique, chaque chiffrement ou chaque propriété de chiffrement associé à un objet.
sys.syscerts Existe dans toutes les bases de données. Contient une ligne pour chaque certificat dans une base de données.
sys.sysasymkeys Existe dans toutes les bases de données. Chaque ligne représente une clé asymétrique.
sys.ftinds Existe dans toutes les bases de données. Contient une ligne pour chaque index de texte intégral dans la base de données.
sys.sysxprops Existe dans toutes les bases de données. Contient une ligne pour chaque propriété étendue.
sys.sysallocunits Existe dans toutes les bases de données. Contient une ligne pour chaque unité d'allocation de stockage.
sys.sysrowsets Existe dans toutes les bases de données. Contient une ligne pour chaque ensemble de lignes de partition pour un index ou un segment.
sys.sysrowsetrefs Existe dans toutes les bases de données. Contient une ligne pour chaque référence d'index à un ensemble de lignes.
sys.syslogshippers Existe uniquement dans la base de données master . Contient une ligne pour chaque témoin de mise en miroir de bases de données.
sys.sysremsvcbinds Existe dans toutes les bases de données. Contient une ligne pour chaque liaison de service distant.
sys.sysconvgroup Existe dans toutes les bases de données. Contient une ligne pour chaque instance de service dans Service Broker.
sys.sysxmitqueue Existe dans toutes les bases de données. Contient une ligne pour chaque file d'attente de transmission de Service Broker.
sys.sysdesend Existe dans toutes les bases de données. Contient une ligne pour chaque point de terminaison d'envoi d'une conversation Service Broker.
sys.sysdercv Existe dans toutes les bases de données. Contient une ligne pour chaque point de terminaison récepteur d'une conversation Service Broker.
sys.sysendpts Existe uniquement dans la base de données master . Contient une ligne pour chaque point de terminaison créé dans le serveur.
sys.syswebmethods Existe uniquement dans la base de données master . Contient une ligne pour chaque méthode SOAP définie sur un point de terminaison HTTP SOAP créé sur le serveur.
sys.sysqnames Existe dans toutes les bases de données. Contient une ligne pour chaque espace de noms ou chaque nom qualifié à un jeton d'ID de 4 octets.
sys.sysxmlcomponent Existe dans toutes les bases de données. Chaque ligne représente un composant de schéma XML.
sys.sysxmlfacet Existe dans toutes les bases de données. Contient une ligne pour chaque facette (restriction) XML d'une définition de type XML.
sys.sysxmlplacement Existe dans toutes les bases de données. Contient une ligne pour chaque emplacement XML pour les composants XML.
sys.syssingleobjrefs Existe dans toutes les bases de données. Contient une ligne pour chaque référence générale de N à 1.
sys.sysmultiobjrefs Existe dans toutes les bases de données. Contient une ligne pour chaque référence générale de N à N.
sys.sysobjvalues Existe dans toutes les bases de données. Contient une ligne pour chaque propriété de valeur générale d'une entité.
sys.sysguidrefs Existe dans toutes les bases de données. Contient une ligne pour chaque référence d'ID classifiée GUID.

Mise à jour des tables de base système

Vous pouvez afficher les données des tables système à l’aide des vues du catalogue système. Pour mettre à jour les métadonnées dans une table de base système, utilisez l’interface Transact-SQL appropriée (par exemple, les instructions DDL). Vous ne pouvez pas mettre à jour manuellement les tables système. SQL Server signale les messages suivants lorsque vous effectuez des mises à jour directes vers des tables système.

Une table système est mise à jour manuellement

Msg 17659 : Avertissement : l’ID de <> table système a été mis à jour directement dans l’ID d’ID <> de base de données et la cohérence du cache n’ont peut-être pas été conservés. SQL Server doit être redémarré.

Démarrage d’une base de données avec une table système mise à jour manuellement

Msg 3859 : Avertissement : Le catalogue système a été mis à jour directement dans l’ID de base de données 17, le plus récemment à date_time.

Exécution de la commande DBCC_CHECKDB après la mise à jour manuelle d’une table système

Msg 3859 : Avertissement : Le catalogue système a été mis à jour directement dans l’ID de base de données 17, le plus récemment à date_time.

Si vous effectuez des mises à jour manuelles d’une table système et rencontrez un problème, vous serez peut-être invité à effectuer une restauration à partir d’une sauvegarde ou à copier les données de la base de données affectée vers une nouvelle base de données. En savoir plus sur les messages d’erreur d’action utilisateur.