sys.dm_clr_appdomains (języka Transact-SQL)
Zwraca wiersz dla każdej aplikacji domena serwera.domena aplikacji (elementu AppDomain) jest konstrukcji w Microsoft .NET Framework wykonywalnych języka wspólnego (CLR) jest jednostką izolacji aplikacji. W tym widoku można używać do zrozumienia i rozwiązywanie problemów z CLR integracja obiektów, które są wykonywane w Microsoft SQL Server.
Jest kilka typów obiektów bazy danych integracja zarządzane środowisko CLR.Aby uzyskać ogólne informacje dotyczące tych obiektów, zobacz Building obiekty bazy danych z integracji środowiska wykonawczego języka wspólnego (CLR).W każdym przypadku, gdy obiekty te są wykonywane, SQL Server tworzy elementu AppDomain zgodnie z którą można ładować i wykonać wymaganego kodu.poziom izolacji dla elementu AppDomain jest elementu AppDomain na bazie danych na właściciela.Oznacza to, że wszystkie obiekty CLR posiadane przez użytkownika są zawsze wykonywane w tym samym elementu AppDomain.Elementu AppDomain nie jest niszczony, po zakończeniu wykonywania kodu.Zamiast tego są buforowane w pamięci dla przyszłego wykonania.Zwiększa wydajność.
Aby uzyskać więcej informacji, zobacz Domen aplikacji.
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
appdomain_address |
varbinary(8) |
Adres elementu AppDomain.Wszystkie zarządzane bazy danych obiektów posiadanych przez użytkownika zawsze są ładowane w tym samym elementu AppDomain.W tej kolumna można używać do wyszukiwania wszystkich zestawów aktualnie załadowany w tym elementu AppDomain w 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 |
Czas podczas elementu AppDomain został utworzony.Ponieważ elementami AppDomain są buforowane i ponownie na lepszą wydajność, creation_time niekoniecznie jest czas , kiedy wykonywany był kod. |
db_id |
int |
Identyfikator bazy danych, w której ta 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 można wykonać w tym elementu AppDomain. |
Stan |
nvarchar(128) |
Deskryptor dla bieżącego stanu elementu AppDomain.Elementu AppDomain mogą znajdować się w różnych Państwach od tworzenia do usunięcia.Zobacz sekcję Uwagi w tym temacie, aby uzyskać więcej informacji. |
strong_refcount |
int |
Liczba silnych odwołania do tego elementu AppDomain.Odzwierciedla to liczba aktualnie wykonywanych partii, które korzystają z tego elementu AppDomain.Należy zauważyć, że wykonanie tego widoku spowoduje utworzenie silne liczbę odwołań metody; nawet jeśli jest żaden kod aktualnie wykonywanych strong_refcount ma wartość 1. |
weak_refcount |
int |
Liczba słabe odwołania do tego elementu AppDomain.Wskazuje, ile obiektów wewnątrz elementu AppDomain są buforowane.Podczas wykonać obiektu bazy danych zarządzanej SQL Server buforuje go w programie elementu AppDomain do ponownego użycia w przyszłości.Zwiększa wydajność. |
Koszt |
int |
Koszty elementu AppDomain.Im wyższy koszt, tym bardziej prawdopodobne to elementu AppDomain ma być rozładowywane pod ciśnieniem pamięci.Koszt zależy zwykle ilość pamięci jest wymagane do odtworzenia to elementu AppDomain. |
wartość |
int |
Wartość elementu AppDomain.Im niższa wartość, tym większe jest prawdopodobieństwo to elementu AppDomain ma być rozładowywane pod ciśnieniem pamięci.Wartość zazwyczaj jest zależna od liczby połączeń lub instancje są korzystanie z tej elementu AppDomain. |
Uwagi
Istnieje relacja jeden do maj między dm_clr_appdomains.appdomain_address i dm_clr_loaded_assemblies.appdomain_address.
Następujące tabele listy możliwych Państwo wartości, a ich opisy i kiedy występują w elementu AppDomain cyklu pomocy technicznej.Informacji tych można używać do postępuj zgodnie z lifecyle z elementu AppDomain i obserwuj podejrzanych lub powtarzających się elementu AppDomain wystąpień rozładunku, bez konieczności analizowania dziennika zdarzeń systemu Windows.
Inicjowanie elementu AppDomain
Stan |
Opis |
---|---|
E_APPDOMAIN_CREATING |
Elementu AppDomain jest tworzony. |
Użycie elementu AppDomain
Stan |
Opis |
---|---|
E_APPDOMAIN_SHARED |
Środowisko czasu wykonania elementu AppDomain jest gotowy do użycia przez wielu użytkowników. |
E_APPDOMAIN_SINGLEUSER |
Elementu AppDomain jest gotowy do użycia w operacje DDL .Różnią się od E_APPDOMAIN_SHARED, w tym elementami AppDomain udostępnionego są używane do wykonania integracja CLR w przeciwieństwie do operacji DDL .Takie elementami AppDomain są odizolowane od innych operacji jednoczesnych. |
E_APPDOMAIN_DOOMED |
Elementu AppDomain zostanie załadowany, ale obecnie nie ma wątków działających w nim. |
Oczyszczanie AppDomain
Stan |
Opis |
---|---|
E_APPDOMAIN_UNLOADING |
SQL Serverzażądał, aby zwolnić środowisko CLR elementu AppDomain, zazwyczaj, ponieważ wirtualny plik dziennika , który zawiera obiekty bazy danych zarządzanej zostały zmienione lub usunięte. |
E_APPDOMAIN_UNLOADED |
Środowisko CLR nie został zwolniony elementu AppDomain.Zazwyczaj jest to wynikiem procedury eskalacji, ze względu na ThreadAbort, OutOfMemory, lub nieobsługiwany wyjątek w kodzie użytkownika. |
E_APPDOMAIN_ENQUEUE_DESTROY |
Elementu AppDomain została zwolniona w zestaw SQL Server. |
E_APPDOMAIN_DESTROY |
Elementu AppDomain jest zostaną zniszczone przez SQL Server. |
E_APPDOMAIN_ZOMBIE |
Elementu AppDomain zostało zniszczone przez SQL Server; jednak nie wszystkie odniesienia do elementu AppDomain został oczyszczony. |
Uprawnienia
Wymaga uprawnienia Wyświetlanie stanu serwera bazy danych.
Przykłady
Poniższy przykład ilustruje 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)
Poniższy przykład ilustruje sposób wyświetlić wszystkie zespoły w danym 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)