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)