Skip to main content
評価してください: 

vol.2「XML Web サービスで簡易モニタを作ってみよう」

XML Web サービスから MOM のデータベースにアクセス

公開日: 2004 年 9 月 6 日

河端 善博

MOM 2005 の SDK にも XML Web サービスが提供されていますが、これは、他の製品と MOM 2005 の連携用に作られているようです。また、各種クラス ライブラリも用意されていますが、クラスのドキュメントが執筆時点で完備されていません。そこで、今回はこれらの SDK の機能を利用せず、直接 MOM 2005 のログが蓄積されるデータベースにアクセスすることにしました。

  • クラス: MomState.asmx.cs

  • メソッド: GetSummaryStateMainAndRoleRollup

  • 戻り値: DataSet

XML Web サービス MomMoniService の本体は、MomState.asmx.cs で構成していて、公開しているメソッドは、GetSummaryStateMainAndRoleRollup になります。

このメソッドは、DataSet 型で、2 つのテーブル「StateMain」「StateRoleRollup」を返してきます。テーブルとストアド プロシージャの関係は、次のとおりです。

表 1: GetSummaryStateMainAndRoleRollup の戻す DataSet が含むテーブルの一覧
テーブル名ストアド プロシージャ名概要
StateMainp_SummaryStateMainサーバー、ロール別状態
StateRoleRollupp_SummaryStateRoleRollupロールの一覧

ストアド プロシージャは、MOM 2005 のデータベース「OnePoint」の中にもともとあるものを利用しています。データベースのテーブルやストアド プロシージャの仕様は、SDK に解説されていますし、自分で SQL Server の Enterprise Manager をつかって解析することもできます。

私は、Enterprise Manager とプロファイラであたりをつけていきました。プログラムは次のようになります。

[WebMethod]
public DataSet GetSummaryStateMainAndRoleRollup(string groupName1,
string groupName2, string criteria, string roleIdList, string statusList)
{
DataSet result = new DataSet();
using (SqlConnection c = new SqlConnection(cs))
{
c.Open();
using (SqlCommand cmd = new SqlCommand("p_SummaryStateMain", c))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@GroupName1", groupName1);
cmd.Parameters.Add("@GroupName2", groupName2);
cmd.Parameters.Add("@Criteria", criteria);
cmd.Parameters.Add("@RoleIdList", roleIdList);
cmd.Parameters.Add("@StatusList", statusList);
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(result, "StateMain");
}
}
using (SqlCommand cmd = new SqlCommand("p_SummaryStateRoleRollup", c))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@GroupName1", groupName1);
cmd.Parameters.Add("@GroupName2", groupName2);
cmd.Parameters.Add("@Criteria", criteria);
cmd.Parameters.Add("@RoleIdList", roleIdList);
cmd.Parameters.Add("@StatusList", statusList);
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(result, "StateRoleRollup");
}
}
c.Close();
}
return result;
}

XML Web サービスができると、図のようにして、参照することができます。

MomMoniService を XML Web サービスとして公開

図 7: MomMoniService を XML Web サービスとして公開

ページのトップへ


目次

著者

河端 善博河端 善博

有限会社 COZAX 代表取締役社長
PASSJ 理事
セキュリティ分科会ボードリーダ
INETA Japan リード
MVP for SQL Server