Operations Tools と SQL デバッガー
運用・開発で使う 2 つのツールの使い方をまとめます。
- Operations Tools: パフォーマンスの観測やサイトの利用状況の可視化ができるツールです。プリザンターからのリンクがないため、拡張ナビゲーションメニューに登録すると便利です。
- SQL デバッガー: Debug ビルドで動かすと、発行されたすべての SQL が
App_Data/Logsにファイル出力されます。
Operations Tools へのメニューを追加する
Operations Tools はプリザンターの画面から遷移する手段がなく、URL を直接入力する必要があります。次のファイルを 拡張ナビゲーションメニュー の所定のフォルダに置くと、ナビゲーションメニューから各画面に移動できます。
{
"TargetId": "SettingsMenu",
"Action": "Append",
"UserIdList": [1],
"NavigationMenus": [
{
"ContainerId": "OperationsToolsContainer",
"MenuId": "OperationsToolsMenu",
"Name": "Operations Tools",
"Icon": "ui-icon ui-icon-gear",
"ChildMenus": [
{
"MenuId": "OperationsToolsMenu_Admin",
"Name": "管理画面",
"Icon": "ui-icon ui-icon-info",
"LinkParams": [
"operations-tools",
"admin"
]
},
{
"MenuId": "OperationsToolsMenu_Operation",
"Name": "運⽤レポート",
"Icon": "ui-icon ui-icon-info",
"LinkParams": [
"operations-tools",
"operation"
]
},
{
"MenuId": "OperationsToolsMenu_Usage",
"Name": "利⽤状況詳細",
"Icon": "ui-icon ui-icon-lightbulb",
"LinkParams": [
"operations-tools",
"usage"
]
},
{
"MenuId": "OperationsToolsMenu_Monitoring",
"Name": "監視アラート",
"Icon": "ui-icon ui-icon-alert",
"LinkParams": [
"operations-tools",
"monitoring"
]
},
{
"MenuId": "OperationsToolsMenu_Site",
"Name": "運用サイト情報一覧",
"Icon": "ui-icon ui-icon-document-b",
"LinkParams": [
"operations-tools",
"site"
]
},
{
"MenuId": "OperationsToolsMenu_Access",
"Name": "アクセス権一覧",
"Icon": "ui-icon ui-icon-document-b",
"LinkParams": [
"operations-tools",
"access"
]
},
{
"MenuId": "OperationsToolsMenu_Parameter",
"Name": "パラメータ一覧",
"Icon": "ui-icon ui-icon-document-b",
"LinkParams": [
"operations-tools",
"parameter"
]
}
]
}
]
}UserIdList に Operations Tools にアクセスできるユーザーの UserId を指定し、対象ユーザーにだけ表示させるのがポイントです。拡張機能の IdList は画面のレコード ID・サイト ID(context.Id)との照合に使われ、ユーザーの絞り込みは UserIdList で行います(ExtensionUtilities.cs)。そのため IdList を UserIdList に修正しています。

INFO
Operations Tools の 1.2.0(2024/10/11 公開)から、Operations Tools 側にもプリザンターのトップページに戻るリンクが追加されています。なお、プリザンター 1.5 系(.NET 10)では 1.3 系の Operations Tools は動作しないため、1.4 系以降を使ってください(バージョンアップ 参照)。
SQL デバッガー
データベースに発行される SQL をファイルに出力する機能です。どんな SQL が実行されているかを確認でき、パフォーマンスチューニングや不具合調査に使えます。
Debug ビルドでのみ動作
SQL デバッガーはコンパイル時に DEBUG シンボルが定義されている場合のみ有効です(書き込み処理に [Conditional("DEBUG")] が付いています。SqlDebugs.cs)。リリースされているバイナリは Release ビルドのため使えません。本番環境で監視目的に使う場合は、Debug ビルドのバイナリを自分で用意する必要があります。
使い方
- Debug ビルドで実行する(Visual Studio なら構成を Debug にして実行するだけです)
- アプリケーションを操作すると、SQL が次のファイルに出力される
Implem.Pleasanter
└─ App_Data
└─ Logs
├─ CommandTextForDebugging_1.sql
├─ CommandTextForDebugging_2.sql
└─ CommandTextForDebugging_3.sqlファイルは最大 3 つで、それぞれ 1MB を上限にローテーションしながら書き込まれます(SqlDebugs.cs)。
出力例(SQL Server):
-- [2026-01-27 10:30:45.123 +09:00] -----------------------------------------------------------------------------
use [Implem.Pleasanter];
declare @T int; set @T = 1;
declare @D int; set @D = 1;
declare @U int; set @U = 1;
select
"Items"."ReferenceId",
"Items"."SiteId",
...
from "Items"
where "Items"."ReferenceId" = @ip1
;出力された SQL は SSMS などでそのまま実行できるため、意図した SQL が発行されているかの確認、実行プランによるパフォーマンス分析、不具合の原因調査に使えます。
データベースごとの出力形式
| データベース | USE 文 | パラメータ |
|---|---|---|
| SQL Server | 出力される | 変数宣言 + SET |
| PostgreSQL | 出力されない | インライン置換 |
| MySQL | 出力されない | インライン置換 |
PostgreSQL と MySQL はパラメータが値に置き換えられるのでコピーしてすぐ実行できる反面、どこがパラメータか分かりにくくなります。
出力されない SQL
SysLogs テーブルへの書き込みなど、一部の内部処理は出力されません。ログの書き込み自体が無限ループしないようにするための仕様です。