Udostępnij za pośrednictwem


sys.dm_clr_appdomains (Transact-SQL)

Zwraca wiersz dla każdej domeny aplikacji na serwerze.Domena aplikacji (AppDomain) jest konstrukcją Microsoft .NET Framework aparatu plików wykonywalnych języka wspólnego (CLR), będącego jednostką izolowania aplikacji.Widoku tego można używać do zdobywania informacji i rozwiązywania problemów z obiektami integracji CLR, które są wykonywane w programie Microsoft SQL Server.

Istnieje kilka typów zarządzanych obiektów bazy danych integracji CLR.Aby uzyskać informacje ogólne dotyczące tych obiektów, zobacz Budowanie obiektów bazy danych za pomocą integracji aparatu plików wykonywalnych języka wspólnego (CLR).Przy każdym wykonaniu takiego obiektu SQL Server tworzy obiekt AppDomain, w którym można ładować i wykonywać żądany kod.Poziom izolowania dla AppDomain to jeden obiekt AppDomain na bazę danych na właściciela.To znaczy, że wszystkie obiekty CLR, będące własnością użytkownika, są zawsze wykonywane w tym samym obiekcie AppDomain.Obiekt AppDomain nie jest niszczony po zakończeniu wykonywania kodu.Zamiast tego jest buforowany w pamięci do wykonania w przyszłości.Powoduje to zwiększenie wydajności.

Aby uzyskać więcej informacji zobacz Domeny aplikacji.

Nazwa kolumna

Typ danych

Description

appdomain_address

varbinary(8)

Adres Elementu AppDomain.Wszystkie zarządzane obiekty w posiadaniu użytkownika zawsze są ładowane w tej samej bazy danych Elementu AppDomain.W tej kolumnie można użyć do wyszukiwania wszystkich zestawów załadowanych obecnie do tego Elementu AppDomain in sys.dm_clr_loaded_assemblies.

appdomain_id

int

Identyfikator Elementu AppDomain.Każdy Elementu AppDomain ma unikatowy identyfikator.

appdomain_name

varchar(386)

Nazwa Elementu AppDomain , który został przypisany przez SQL Server.

creation_time

datetime

Godzina utworzenia obiektu AppDomain.Obiekty AppDomain są buforowane i ponownie używane w celu zapewnienia większej wydajności, dlatego creation_time nie musi wskazywać faktycznej godziny wykonania kodu.

db_id

int

Identyfikator bazy danych, w którym to Elementu AppDomain został utworzony.Kod przechowywane w dwóch różnych baz danych nie można udostępnić jeden Elementu AppDomain.

user_id

int

Identyfikator użytkownika, których obiekty mogą być wykonać w tym Elementu AppDomain.

Stan

nvarchar(128)

Bieżący stan Elementu AppDomain.Moduł został utworzony za pomocą opcji zestaw wartości null ANSI, ustawiona na ON.

strong_refcount

int

Liczba silnych odwołań do tej Elementu AppDomain.Odzwierciedla to liczba aktualnie wykonywanych instancje Użyj Elementu AppDomain.Należy zauważyć, że wykonanie tego widoku będzie utworzyć silne refcount; nawet wtedy, gdy jest żaden kod nie jest aktualnie wykonywane, strong_refcount ma wartość 1.

weak_refcount

int

Liczba słabych odwołań do tego obiektu AppDomain.Określa, ile jest zbuforowanych obiektów wewnątrz obiektu AppDomain.Przy wykonywaniu zarządzanego obiektu bazy danych SQL Server buforuje go w obiekcie AppDomain do ponownego użycia w przyszłości.Powoduje to zwiększenie wydajności.

koszt

int

Koszt obiektu AppDomain.Im wyższy koszt, tym bardziej prawdopodobne, że obiekt AppDomain zostanie zwolniony z powodu braku pamięci.Koszt zwykle zależy od tego, jak dużo pamięci potrzeba do ponownego utworzenia obiektu AppDomain.

wartość

int

Wartość Elementu AppDomain.Im niższa wartość, tym większe prawdopodobieństwo to Elementu AppDomain jest można zwolnić pod ciśnieniem pamięci.Wartość zazwyczaj zależy od liczby połączeń lub partii używasz to Elementu AppDomain.

Remarks

Istnieje relacja jeden do mogą między dm_clr_appdomains.appdomain_address and dm_clr_loaded_assemblies.appdomain_address.

Poniższa lista tabel możliwe Stan wartości, a ich opisy, oraz kiedy występują w Elementu AppDomain cyklu.Postępuj zgodnie z lifecyle z za pomocą tych informacji Elementu AppDomain i obserwuj podejrzanych lub powtarzających się Elementu AppDomain wystąpień rozładunku, bez konieczności analizować w dzienniku zdarzeń systemu Windows.

Inicjalizacja obiektu AppDomain

Stan

Description

E_APPDOMAIN_CREATING

The AppDomain is being created.

Używanie obiektu AppDomain

Stan

Description

E_APPDOMAIN_SHARED

W czasie wykonywania Elementu AppDomain jest gotowy do używania przez wielu użytkowników.

E_APPDOMAIN_SINGLEUSER

The AppDomain is ready for use by a single user to perform DDL operations.

E_APPDOMAIN_DOOMED

The AppDomain is scheduled to be unloaded, but there are currently threads executing in it.

Oczyszczanie obiektu AppDomain

Stan

Description

E_APPDOMAIN_UNLOADING

SQL Server zażądał, aby zwolnić do środowiska CLR Elementu AppDomain, zazwyczaj, ponieważ wirtualny plik dziennika, zawierającą obiekty zarządzane bazy danych został zmieniony lub usunięty.

E_APPDOMAIN_UNLOADED

Środowisko CLR zostało zwolnione Elementu AppDomain.Zazwyczaj jest to wynikiem procedury z powodu eskalacji ThreadAbort, OutOfMemorylub nieobsługiwany wyjątek w kodzie użytkownika.

E_APPDOMAIN_ENQUEUE_DESTROY

The AppDomain has been unloaded in CLR and zestaw to be destroyed by SQL Server.

E_APPDOMAIN_DESTROY

The AppDomain is in the process of being destroyed by SQL Server.

E_APPDOMAIN_ZOMBIE

The AppDomain has been destroyed by SQL Server; however, not all of the references to the AppDomain have been cleaned up.

Uprawnienia

Wymaga uprawnienia VIEW SERVER STATE dla bazy danych.

Przykłady

W poniższym przykładzie pokazano sposób wyświetlić szczegółowe informacje o Elementu AppDomain dla danego wirtualny plik dziennika:

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)

W poniższym przykładzie przedstawiono sposób wyświetlenia wszystkich zestawów w danej Elementu AppDomain:

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)