sys.dm_clr_loaded_assemblies(Transact-SQL)
서버 주소 공간으로 로드되는 각각의 관리되는 사용자 어셈블리에 대해 행을 반환합니다. 이 뷰를 사용하여 MicrosoftSQL Server에서 실행하는 CLR 통합의 관리되는 데이터베이스 개체를 이해하고 관련 문제를 해결할 수 있습니다.
어셈블리는 관리되는 데이터베이스 개체를 SQL Server에서 정의 및 배포하는 데 사용되는 관리 코드 DLL 파일입니다. 사용자가 이러한 관리되는 데이터베이스 개체 중 하나를 실행할 때마다 SQL Server 및 CLR은 관리되는 데이터베이스 개체가 정의되는 어셈블리 및 해당 참조를 로드합니다. 어셈블리는 SQL Server에 로드된 상태로 유지되어 성능을 향상시키므로 어셈블리에 포함된 관리되는 데이터베이스 개체가 어셈블리를 다시 로드하지 않고 나중에 호출될 수 있습니다. SQL Server에서 메모리가 부족해질 때까지 어셈블리가 언로드되지 않습니다. 어셈블리 및 CLR 통합에 대한 자세한 내용은 CLR 호스팅 환경을 참조하십시오. 관리되는 데이터베이스 개체에 대한 자세한 내용은 CLR(공용 언어 런타임) 통합을 사용하여 데이터베이스 개체 작성을 참조하십시오.
열 이름 |
데이터 형식 |
설명 |
---|---|---|
assembly_id |
int |
로드된 어셈블리의 ID입니다. assembly_id를 사용하여 sys.assemblies(Transact-SQL) 카탈로그 뷰의 어셈블리에 대한 자세한 정보를 조회할 수 있습니다. Transact-SQLsys.assemblies 카탈로그는 현재 데이터베이스의 어셈블리만 표시합니다. sqs.dm_clr_loaded_assemblies 뷰는 서버에 로드된 모든 어셈블리를 표시합니다. |
appdomain_address |
int |
어셈블리가 로드되는 응용 프로그램 도메인(AppDomain)의 주소입니다. 단일 사용자가 소유한 모든 어셈블리는 항상 동일한 AppDomain에서 로드됩니다. appdomain_address를 사용하여 sys.dm_clr_appdomains 뷰의 AppDomain에 대한 자세한 정보를 조회할 수 있습니다. |
load_time |
datetime |
어셈블리가 로드된 시간입니다. SQL Server에서 메모리가 부족해지고 AppDomain을 언로드할 때까지 어셈블리는 로드된 상태로 유지됩니다. load_time을 모니터링하여 SQL Server에서 메모리가 부족해지고 AppDomain을 언로드하는 빈도를 파악할 수 있습니다. |
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
주의
dm_clr_loaded_assemblies.appdomain_address 뷰는 dm_clr_appdomains.appdomain_address와 다 대 일 관계를 가집니다. dm_clr_loaded_assemblies.assembly_id 뷰는 sys.assemblies.assembly_id와 일 대 다 관계를 가집니다.
예
다음 예에서는 로드되어 있는 현재 데이터베이스의 모든 어셈블리에 대한 세부 정보를 표시하는 방법을 보여 줍니다.
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
다음 예에서는 지정된 어셈블리를 로드하는 AppDomain에 대한 세부 정보를 표시하는 방법을 보여 줍니다.
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 = 555)