sys.dm_clr_appdomains (Transact-sql)
Sunucu her uygulama etki alanı için bir satır döndürür. Uygulama etki alanı (AppDomain) bir yapı olduğunu Microsoft .NET Frameworkbir uygulama yalıtım birimi olan ortak dil çalışma zamanı (clr). Sen-ebilmek kullanma bu görünüm içinde yürütme clr tümleştirme nesnelerde sorun giderme ve anlamak için Microsoft SQL Server.
clr tümleştirme yönetilen veritabanı nesnelerini çeşitli türleri vardır. Bu nesneler hakkında genel bilgi için bkz: Bina veritabanı nesneleri ile ortak dil çalışma zamanı (clr) tümleştirme. Bu nesneler yürütülen her SQL Serveroluşturur bir AppDomain altında hangi o yük ve gerekli kodu yürütün. Yalıtım düzeyi için bir AppDomain bir AppDomain başına veritabanı başına sahibi. Başka bir deyişle, bir kullanıcıya ait olan tüm clr nesneleri her zaman aynı yürütülen AppDomain (kullanıcı clr veritabanı nesnelerini farklı veritabanları, clr veritabanı nesnelerini farklı uygulama alanlarında çalışır kaydederse) veritabanı başına. Bir AppDomain kod yürütme tamamlandığında yok edilmez. Bunun yerine, ileride yürütmeler için bellekte önbelleğe alınır. Bu, performansı artırır.
Daha fazla bilgi için bkz: Uygulama etki alanlarının.
Sütun adı |
Veri türü |
Açıklama |
---|---|---|
appdomain_address |
varbinary(8) |
Adresi, AppDomain. Tüm yönetilen veritabanı, bir kullanıcının sahip olduğu nesneler her zaman yüklenir aynı AppDomain. Şu anda bu yüklenen tüm derlemelere aramak için bu sütunu kullanabilirsiniz AppDomain içinde sys.dm_clr_loaded_assemblies. |
appdomain_id |
int |
Kımlığı AppDomain. Her AppDomain benzersiz bir kimliği vardır. |
appdomain_name |
varchar(386) |
Adı AppDomain tarafından atanmış olarak SQL Server. |
creation_time |
datetime |
Zaman zaman AppDomain oluşturuldu. Çünkü AppDomains'in önbelleğe alınmış olup, daha iyi performans için yeniden creation_time mutlaka zaman kodu yürütülen zaman değil. |
DB_ID |
int |
Bu veritabanı Kımlığı AppDomain oluşturuldu. Kodu iki farklı veritabanlarında depolanan bir pay olamaz AppDomain. |
user_id |
int |
Nesneleri bu yürütebilirsiniz kullanıcı Kımlığı AppDomain. |
Devlet |
nvarchar(128) |
Bir tanımlayıcısı geçerli durumunu AppDomain. AppDomain oluşturma farklı Devletleri'nden silinmesi için olabilir. Bu konuda daha fazla bilgi için açıklamalar bölümüne bakın. |
strong_refcount |
int |
Bu güçlü başvuru sayısı AppDomain. Bu kullanma bu toplu işlemleri yürütülmekte sayısını yansıtır AppDomain. Bu görünüm yürütülmesini oluşturacağını unutmayın bir güçlü refcount; hatta ise yürütülmekte, kod strong_refcount 1 değerine sahiptir. |
weak_refcount |
int |
Bu zayıf başvuru sayısı AppDomain. Bu, içinde kaç nesneleri gösterir AppDomain önbelleğe alınır. Bir yönetilen veritabanı nesnesi çalıştırdığınızda SQL Serveriçinde önbelleğe AppDomain ileride yeniden kullanmak için. Bu, performansı artırır. |
Maliyet |
int |
Maliyeti AppDomain. Yüksek maliyet, daha büyük olasılıkla bu AppDomain bellek baskısı altında boş etmektir. Maliyet genellikle bağlıdır ne kadar bellek bu yeniden oluşturmak için gerekli AppDomain. |
değer |
int |
Değer, AppDomain. Düşük değeri, daha büyük olasılıkla bu AppDomain bellek baskısı altında boş etmektir. Genellikle bağlıdır kaç bağlantıları veya toplu işlemleri bu kullanmakta olduğunuz AppDomain. |
total_processor_time_ms |
bigint |
Geçerli uygulama etki alanındaki işlem başlatıldığından bu yana yürütülürken tüm iş parçacıkları tarafından kullanılan milisaniye cinsinden toplam işlemci süresi. Bu denktir System.AppDomain.MonitoringTotalProcessorTime. |
total_allocated_memory_kb |
bigint |
Toplam boyutu, kilobayt olarak toplanmış olan bellek çıkarılarak olmadan oluşturulduktan sonra uygulama etki alanı tarafından yapılmış olan tüm bellek ayırmalarını. Bu denktir System.AppDomain.MonitoringTotalAllocatedMemorySize. |
survived_memory_kb |
bigint |
Geçerli uygulama etki alanı tarafından başvurulan son tam olarak toplanması ve bu engelleme, hayatta kilobayt olarak bilinmektedir. Bu denktir System.AppDomain.MonitoringSurvivedMemorySize. |
Açıklamalar
Bir Mayıs ilişkisi arasında dm_clr_appdomains.appdomain_address ve dm_clr_loaded_assemblies.appdomain_address.
Aşağıdaki tablo listesi mümkün devlet değerleri, açıklamalar, ve ne zaman gerçekleşeceğini AppDomain ömrü. Lifecyle, izlemek için bu bilgiyi kullanabilirsiniz bir AppDomain ve şüpheli veya tekrarlayan izlemeye AppDomain boşaltma, Windows olay günlüğüne ayrıştırmak zorunda kalmadan örnekleri.
AppDomain başlatma
Durum |
Açıklama |
---|---|
E_APPDOMAIN_CREATING |
AppDomain oluşturulmaktadır. |
AppDomain kullanımı
Durum |
Açıklama |
---|---|
E_APPDOMAIN_SHARED |
Çalışma Zamanı AppDomain birden fazla kullanıcı tarafından kullanılmak üzere hazırdır. |
E_APPDOMAIN_SINGLEUSER |
AppDomain ddl işlemleri kullanılmaya hazırdır. Bu E_APPDOMAIN_SHARED paylaşılan AppDomains'in clr tümleştirme infaz ddl işlemleri olarak kullanılan bakımından farklıdır. Böyle AppDomains'in başka eşzamanlı işlemler izole edilmiştir. |
E_APPDOMAIN_DOOMED |
AppDomain kaldırılmış, planlanmıştır vardır ama şu anda içinde çalışan iş parçacıklarının. |
AppDomain Temizleme
Durum |
Açıklama |
---|---|
E_APPDOMAIN_UNLOADING |
SQL Serverclr kaldırın ki istedi AppDomain, çünkü genellikle yönetilen veritabanı nesnelerini içeren derleme değiştirilmiş bırakılan veya. |
E_APPDOMAIN_UNLOADED |
clr kaldırıldı AppDomain. Bu genellikle bir eskalasyon prosedürü nedeniyle sonucudur ThreadAbort, OutOfMemory, ya da kullanıcı kodunda işlenmeyen bir özel durum. |
E_APPDOMAIN_ENQUEUE_DESTROY |
AppDomain clr kaldırıldı ve tarafından yok edilmesi için SQL Server. |
E_APPDOMAIN_DESTROY |
AppDomain tarafından sürecinde yok SQL Server. |
E_APPDOMAIN_ZOMBIE |
AppDomain tarafından tahrip edilmiş SQL Server; Ancak, tüm başvuruları AppDomain Temizlenen. |
İzinler
Veritabanı VIEW server state izni gerektirir.
Örnekler
Aşağıdaki örnek ayrıntılarını görüntülemek nasıl gösterir bir AppDomain için verilen derleme:
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)
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)
Aşağıdaki örnek içinde tüm derlemelere görüntülemek nasıl gösterir bir verilen 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)
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)
Ayrıca bkz.
Başvuru
sys.dm_clr_loaded_assemblies (Transact-sql)
Common Language Runtime ilgili dinamik yönetim görünümleri (Transact-sql)