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)