다음을 통해 공유


sys.dm_clr_loaded_assemblies(Transact-SQL)

서버 주소 공간으로 로드되는 각각의 관리되는 사용자 어셈블리에 대해 행을 반환합니다. 이 뷰를 사용하여 Microsoft SQL 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)