共通言語ランタイム(CLR)統合で作成されたアプリケーションドメインの一覧を出力するSQL Server動的管理ビューレファレンス(17)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、共通言語ランタイム(CLR)統合で作成されたアプリケーションドメインの一覧の出力について解説します。

» 2021年06月15日 05時00分 公開
[伊東敏章@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は、共通言語ランタイム(CLR)統合で作成されたアプリケーションドメインの一覧を出力する「sys.dm_clr_appdomains」について解説します。対応バージョンは、SQL Server 2008以降です。

概要

 SQL Serverでは、CLR統合を使用することで「Microsoft Visual Basic .NET」や「Microsoft Visual C#」などの .NET Framework言語を使用して、ストアドプロシージャやトリガー、ユーザー定義型、ユーザー定義関数、ユーザー定義集計、ストリーミングテーブル値関数の記述が可能です。

 これらのCLR統合により作成されたマネージオブジェクトを実行する場合、SQL Serverは「アプリケーションドメイン(AppDomain)」と呼ばれる分離単位を作成し、その中で必要なコードをロードして実行します。

 アプリケーションドメインは、データベース別にアセンブリの所有者ごとに1つ作成されます。データベースや所有者の異なるアセンブリでマネージコードを実行した場合には、新しいアプリケーションドメインが作成されます。マネージオブジェクトの実行が終了しても、アプリケーションドメインは破棄されることなくキャッシュされ、SQL Server内でメモリが不足した場合に破棄されます。

 「sys.dm_clr_appdomains」を使用することで、現在のアプリケーションドメインの状態や作成日時、CPU、メモリ使用量など、CLR統合のトラブルシューティングなどに有用な、アプリケーションドメインに関する詳細な情報の一覧を出力できます。

出力内容

列名 データ型 説明
appdomain_address varbinary(8) アプリケーションドメインのアドレス
appdomain_id int アプリケーションドメインのID
appdomain_name varchar(386) SQL Serverにより割り当てられたアプリケーションドメイン名
creation_time datetime アプリケーションドメインが作成された時刻
db_id int アプリケーションドメインが作成されたデータベースID
user_id int アプリケーションドメインが作成されたアセンブリの所有者
state nvarchar(128) アプリケーションドメインの状態
strong_refcount int 強参照の数。このアプリケーションドメインを使用しているバッチの実行数を反映する。現在実行中のコードが無い場合でも値は1になる
weak_refcount int 弱参照の数。このアプリケーションドメインでキャッシュされたマネージデータベースオブジェクトの数を示す
cost int コスト。値が高いほどメモリ不足でアンロードされる。再作成に必要なメモリ量により算出される
value int 価値。値が低いほどメモリ不足でアンロードされる。アプリケーションドメインを使用する接続数、バッチの数により算出される
total_processor_time_ms bigint アプリケーションドメインで実行中の全スレッドによって使用されたミリ秒単位の合計プロセッサ時間
total_allocated_memory_kb bigint アプリケーションドメインで行われた全てのメモリ割り当てのKB単位の合計サイズ。すでに解放されたメモリ量も差し引かれない
survived_memory_kb bigint ガベージコレクションの実行後に残された、アプリケーションドメインによって参照されていることが判明しているKB単位の合計サイズ

動作例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。