次の方法で共有


sys.dm_clr_loaded_assemblies (Transact-SQL)

適用対象: 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-SQL sys.assemblies カタログには、現在のデータベース内のアセンブリのみが表示されることに注意してください。 sqs.dm_clr_loaded_assemblies ビューには、サーバーに読み込まれたすべてのアセンブリが表示されます。
appdomain_address int アセンブリが読み込まれるアプリケーション ドメイン (AppDomain) のアドレス。 1 人のユーザーが所有するすべてのアセンブリは、常に同じ AppDomainに読み込まれます。 appdomain_addressを使用すると、sys.dm_clr_appdomains ビューで AppDomain に関する詳細情報を参照できます。
load_time datetime アセンブリが読み込まれた時刻。 SQL Server がメモリ不足になり、 AppDomain がアンロードされるまで、アセンブリは読み込まれたままになります。 load_timeを監視して、SQL Server がメモリ不足になる頻度を把握し、AppDomainをアンロードできます。

アクセス許可

サーバーに対する VIEW SERVER STATE 権限が必要です。

SQL Server 2022 以降でのアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE 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 AS a  
WHERE appdomain_address =   
(SELECT appdomain_address   
 FROM sys.dm_clr_loaded_assemblies  
 WHERE assembly_id = 555);  

参照

共通言語ランタイム関連の動的管理ビュー (Transact-SQL)