Partage via


sys.dm_db_uncontained_entities (Transact-SQL)

S'applique à : SQL Server

Affiche tous les objets sans relation contenant-contenu utilisés dans la base de données. Les objets non autonomes sont des objets qui traversent la limite de la base de données dans une base de données autonome. Cette vue est accessible depuis une base de données autonome et une base de données non autonome. Si sys.dm_db_uncontained_entities est vide, votre base de données n’utilise aucune entité non détenue.

Si un module traverse la limite de la base de données plusieurs fois, seule la première traversée découverte est signalée.

Nom de la colonne Type Description
class int 1 = objet ou colonne (inclut des modules, XPs, vues, synonymes et tables).

4 = Principal de la base de données

5 = Assembly

6 = Type

7 = Index (index de texte intégral)

12 = Déclencheur DDL de base de données

19 = Itinéraire

30 = Spécification d'audit
class_desc nvarchar(120) Description de la classe de l'entité. L’un des éléments suivants pour faire correspondre la classe :

OBJECT_OR_COLUMN

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

INDEX

DATABASE_DDL_TRIGGER

ROUTE

AUDIT_SPECIFICATION
major_id int ID de l'entité.

Si la classe = 1, puis object_id

Si la classe = 4, sys.database_principals.principal_id.

Si la classe = 5, sys.assemblies.assembly_id.

Si la classe = 6, sys.types.user_type_id.

Si la classe = 7, sys.indexes.index_id.

Si la classe = 12, sys.triggers.object_id.

Si la classe = 19, puis sys.routes.route_id.

Si la classe = 30, puis sys. database_audit_specifications.database_specification_id.
statement_line_number int Si la classe est un module, retourne le numéro de ligne sur lequel l'utilisation sans relation contenant-contenu se trouve. Sinon, la valeur est Null.
statement_ offset_begin int Si la classe est un module, indique, en octets, en commençant par 0, la position de départ où l'utilisation sans relation contenant-contenu démarre. Sinon, la valeur de retour est Null.
statement_ offset_end int Si la classe est un module, indique, en octets, en commençant par 0, la position de fin de l'utilisation sans relation contenant-contenu. La valeur -1 indique la fin du module. Sinon, la valeur de retour est Null.
statement_type nvarchar(512) Type d'instruction.
nom de feature_ nvarchar (256) Retourne le nom externe de l'objet.
feature_type_name nvarchar (256) Renvoie le type de fonctionnalité.

Notes

sys.dm_db_uncontained_entities montre ces entités qui peuvent potentiellement traverser la limite de la base de données. Toutes les entités de l'utilisateur qui ont la possibilité d'utiliser des objets en dehors de la base de données sont retournées.

Les types de fonctionnalité suivants sont signalés.

  • Comportement de relation contenant contenu inconnu (SQL dynamique ou résolution de noms différée)

  • Commande DBCC

  • Procédure stockée système

  • Fonction scalaire système

  • Fonction table système

  • Fonction système intégrée

Sécurité

autorisations

sys.dm_db_uncontained_entities retourne uniquement les objets pour lesquels l’utilisateur a un certain type d’autorisation. Pour évaluer entièrement l’autonomie de la base de données, cette fonction doit être utilisée par un utilisateur à privilèges élevés, tel qu’un membre du rôle serveur fixe sysadmin ou le rôle db_owner .

Exemples

L'exemple suivant crée une procédure nommée P1, puis interroge sys.dm_db_uncontained_entities. La requête indique que P1 utilise sys.endpoints qui se trouve en dehors de la base de données.

CREATE DATABASE Test;  
GO  
  
USE Test;  
GO  
CREATE PROC P1  
AS   
SELECT * FROM sys.endpoints ;  
GO  
SELECT SO.name, UE.* FROM sys.dm_db_uncontained_entities AS UE  
LEFT JOIN sys.objects AS SO  
    ON UE.major_id = SO.object_id;  

Voir aussi

Bases de données autonomes