CognosはすべてのデータをContents Managerと呼ばれるデータベースに保持している。このデータからMy Folderの中身を取得できる。
ただしデータ保持方法が特殊であるために,SQLは複雑になる。
まずCognos Configuration Managerから利用しているContents Managerを確認する。
次にSQL Management Studioから該当のデータベースにアクセスする。
データベースを指定する
use DATABASE_NAME;
以下のコマンドを流す
with base_query as (select classid, cmobjects.cmid, cmobjects.pcmid, cmobjnames.name as reportname, cmobjnames.mapdlocaleid from cmobjects , cmobjnames where cmobjects.cmid = cmobjnames.cmid --and classid in (10) and cmobjnames.mapdlocaleid in ( 24, 134) union select classid, cmobjects.cmid as cmid, cmobjects.pcmid, cmobjnames.name as reportname, cmobjnames.mapdlocaleid from cmobjects , cmobjnames where cmobjects.cmid = cmobjnames.cmid and cmobjects.cmid in (select distinct cmobjects.pcmid from cmobjects) and cmobjnames.mapdlocaleid in ( 24, 134) ) select distinct OW1.name,X.directory_path,Y.directory_path2 , MAPDLOCALEID from ( select base_query.cmid, base_query.pcmid, base_query.reportname, 1 as Hlevel,classid, base_query.reportname as directory_path, base_query.MAPDLOCALEID from base_query ) x inner join ( select cmid, pcmid, reportname, classid, reportname as directory_path2 from base_query ) y on x.cmid=y.pcmid left join CMOBJPROPS33 ow1 on x.PCMID=OW1.CMID left join CMOBJPROPS33 ow2 on y.PCMID=ow2.CMID order by OW1.NAME
固定値で指定しているmapdlocaleidはロケーションコードである。Cognosでは同じレコードをすべての国毎(言語別)に保有している。そのためにmapdlocaledidでフィルタをかけないと同じレコードに対して50件以上戻ってくる。
今回は24-英語と134-日本語を取得している。24だけでも問題はないが、検証目的で2つの言語から取得している。