sys.dm_clr_appdomains
Mis à jour : 12 décembre 2006
Renvoie une ligne pour chaque domaine d'application du serveur. Le domaine d'application (AppDomain) est une construction dans le langage CLR Microsoft .NET Framework (Common Language Runtime) qui représente l'unité d'isolement d'une application. Vous pouvez utiliser cette vue pour comprendre et résoudre les objets d'intégration CLR qui sont en cours d'exécution dans Microsoft SQL Server.
Il existe plusieurs types d'objets de base de données managés d'intégration CLR. Pour obtenir des informations générales sur ces objets, consultez Création d'objets de base de données avec l'intégration CLR (Common Language Runtime). Dès lors que ces objets sont exécutés, SQL Server crée un domaine d'application AppDomain dans lequel il peut charger et exécuter le code requis. Le niveau d'isolement pour un domaine d'application AppDomain est un domaine d'application AppDomain par base de données et par propriétaire. Cela signifie que tous les objets CLR appartenant à un utilisateur sont toujours exécutés dans le même domaine d'application AppDomain. Le domaine d'application AppDomain n'est pas détruit une fois que l'exécution du code est terminée. Il est mis en cache dans la mémoire pour les prochaines exécutions. Les performances en sont alors améliorées.
Pour plus d'informations, consultez Domaines d'application.
Nom de la colonne | Type de données | Description |
---|---|---|
appdomain_address |
varbinary(8) |
Adresse du domaine d'application AppDomain. Tous les objets de base de données managés appartenant à un utilisateur sont toujours chargés dans le même domaine d'application AppDomain. Vous pouvez utiliser cette colonne pour rechercher dans tous les assemblys en cours de chargement dans ce domaine d'application AppDomain dans sys.dm_clr_loaded_assemblies. |
appdomain_id |
int |
ID du domaine d'application AppDomain. Chaque domaine d'application AppDomain a un ID unique. |
appdomain_name |
varchar(386) |
Nom du domaine d'application AppDomain tel qu'il est assigné par SQL Server. |
creation_time |
datetime |
Heure de création du domaine d'application AppDomain. Dans la mesure où les domaines d'application AppDomains sont mis en cache et réutilisés pour améliorer les performances, creation_time ne correspond pas nécessairement au moment où le code a été exécuté. |
db_id |
int |
ID de la base de données dans laquelle le domaine d'application AppDomain a été créé. Le code stocké dans deux bases de données différentes ne peut pas partager un domaine d'application AppDomain. |
user_id |
int |
ID de l'utilisateur dont les objets peuvent s'exécuter dans le domaine d'application AppDomain. |
state |
nvarchar(128) |
État actuel du domaine d'application AppDomain. Pour plus d'informations, consultez la section « Remarques » de cette rubrique. |
strong_refcount |
int |
Nombre de références fortes au domaine d'application AppDomain. Cela reflète le nombre de lots en cours d'exécution qui utilisent le domaine d'application AppDomain. Notez que l'exécution de cette vue entraîne la création d'un compteur de références fortes ; même si aucun code n'est en cours d'exécution, strong_refcount aura une valeur de 1. |
weak_refcount |
int |
Nombre de références faibles au domaine d'application AppDomain. Cela indique le nombre d'objets contenus dans le domaine d'application AppDomain qui sont mis en cache. Lorsque vous exécutez un objet de base de données managé, SQL Server le met en cache dans le domaine d'application AppDomain pour le réutiliser par la suite. Les performances en sont alors améliorées. |
cost |
int |
Coût du domaine d'application AppDomain. Plus le coût est élevé, plus il y a de chances que le domaine d'application AppDomain soit déchargé si la mémoire est insuffisante. En général, le coût dépend de la quantité de mémoire requise pour recréer le domaine d'application AppDomain. |
value |
int |
Valeur du domaine d'application AppDomain. Plus la valeur est basse, plus il y a de chances que le domaine d'application AppDomain soit déchargé si la mémoire est insuffisante. En général, la valeur dépend du nombre de connexions ou de lots qui utilisent le domaine d'application AppDomain. |
Notes
Il existe une relation un-à-plusieurs entre dm_clr_appdomains.appdomain_address et dm_clr_loaded_assemblies.appdomain_address.
Les tableaux suivants listent les valeurs d'état possibles, en donnent une description et précisent le moment où elles interviennent dans le cycle de vie du domaine d'application AppDomain. Vous pouvez utiliser ces informations pour suivre le cycle de vie d'un domaine d'application AppDomain et repérer le chargement d'instances AppDomain suspectes ou répétitives, sans avoir à analyser le journal des événements Windows.
Initialisation du domaine d'application AppDomain
État | Description |
---|---|
E_APPDOMAIN_CREATING |
Le domaine d'application AppDomain est en cours de création. |
Utilisation du domaine d'application AppDomain
État | Description |
---|---|
E_APPDOMAIN_SHARED |
Le domaine d'application AppDomain est prêt à être utilisé par plusieurs utilisateurs. |
E_APPDOMAIN_SINGLEUSER |
Le domaine d'application AppDomain est prêt à être utilisé par un seul utilisateur pour exécuter des opérations DDL. |
E_APPDOMAIN_DOOMED |
Le domaine d'application AppDomain est planifié pour être déchargé mais des threads y sont en cours d'exécution. |
Suppression du domaine d'application AppDomain
État | Description |
---|---|
E_APPDOMAIN_UNLOADING |
SQL Server a demandé que le CLR décharge le domaine d'application AppDomain, généralement parce que l'assembly qui contient les objets de base de données managés a été altéré ou supprimé. |
E_APPDOMAIN_UNLOADED |
Le CLR a déchargé le domaine d'application AppDomain. Il s'agit généralement du résultat d'une procédure de remontée des problèmes causée par ThreadAbort, OutOfMemory ou une exception non gérée dans le code utilisateur. |
E_APPDOMAIN_ENQUEUE_DESTROY |
Le domaine d'application AppDomain a été déchargé dans le CLR et voué à être détruit par SQL Server. |
E_APPDOMAIN_DESTROY |
Le domaine d'application AppDomain est en cours de destruction par SQL Server. |
E_APPDOMAIN_ZOMBIE |
Le domaine d'application AppDomain a été détruit par SQL Server ; toutefois, les références au domaine d'application AppDomain n'ont pas toutes été supprimées. |
Autorisations
Nécessite l'autorisation VIEW SERVER STATE sur la base de données.
Exemples
L'exemple suivant montre comment afficher les détails d'un domaine d'application AppDomain pour un assembly donné :
select appdomain_id, creation_time, db_id, user_id, state
from sys.dm_clr_appdomains a
where appdomain_address =
(select appdomain_address
from sys.dm_clr_loaded_assemblies
where assembly_id = 500)
L'exemple suivant montre comment afficher tous les assemblys dans un domaine d'application AppDomain donné :
select a.name, a.assembly_id, a.permission_set_desc, a.is_visible, a.create_date, l.load_time
from sys.dm_clr_loaded_assemblies as l
inner join sys.assemblies as a
on l.assembly_id = a.assembly_id
where l.appdomain_address =
(select appdomain_address
from sys.dm_clr_appdomains
where appdomain_id = 15)
Voir aussi
Référence
sys.dm_clr_loaded_assemblies
Fonctions et vues de gestion dynamique
Vues de gestion dynamique CLR (Common Language Runtime)
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
12 décembre 2006 |
|