Cognosのロール「システム管理者」に「すべてのユーザー」グループを復元するSQL


※自分でも読んでもいまいちピンとこなかったのでタイトルを少し変更しました。 (2018.8.2)

こんな時に読んでみてください。

・システム管理者に特定のユーザーやグループを追加する前に「すべてのユーザー」グループを削除してしまった。
・各ロールから「すべてのユーザー」グループが削除済みの権限管理が正しくされた環境のContent Storeを、認証のセットアップがないとりあえずな環境にDBバックアップからリストアした時。

=================================================================
Cognos Administrationで権限設定を実施している際に、何かの拍子にシステム管理者グループに属するユーザーが誰もいない設定にしてしまった時に、システム管理者にすべてのユーザーを復旧する方法です。

下記SQLを実行することで、システム管理者グループのすべてのユーザーを追加することができます。

<Cognosインストールディレクトリ>\configuration\schemas\content\db2\AddSysAdminMember.sql

SQL実行例

※Content StoreのDBのタイプによって、content配下のパスは変更になります。
※SQL実行前にCognosのサービスを停止し、SQL実行後Cognosのサービスを起動してください。
※SQL実行前にContent Store DBへコネクトしておいてください。
※必要に応じてDBのバックアップを取得してください。

システム管理者が不在になってしまうとCognos Administrationを起動することができなくなり、運用に大きな影響を与えてしまいます。かといってContent Storeをバックアップから戻すわけにもいかないし、といった状況でも慌てず対応していただければと思います。
キャプチャはCognos BI 10.2.2のものですが、Cognos Analytics 11.0.7でも実績を確認しております。

~補足~
Content Store用DBのスキーマを変更している場合は、SQLにスキーマ名を追加することでSQLが実行可能になります。

オリジナルSQL
insert into CMREFORD1 (PROPID, CMID, ORD, REFCMID) select   27, (select cmid from cmobjprops1 where upper(objid)='::SYSTEM ADMINISTRATORS'),coalesce((select max(ord) from CMREFORD1 where cmid=(select cmid from cmobjprops1 where upper(objid)='::SYSTEM ADMINISTRATORS')), -1)+1, CMID from CMOBJPROPS1 where upper(OBJID)='::EVERYONE';
スキーマ名を追加したSQL
insert into DB2ADMIN.CMREFORD1 (PROPID, CMID, ORD, REFCMID) select  27, (select cmid from DB2ADMIN.cmobjprops1 where upper(objid)='::SYSTEM ADMINISTRATORS'),coalesce((select max(ord) from DB2ADMIN.CMREFORD1 where cmid=(select cmid from DB2ADMIN.cmobjprops1 where upper(objid)='::SYSTEM ADMINISTRATORS')), -1)+1, CMID from DB2ADMIN.CMOBJPROPS1 where upper(OBJID)='::EVERYONE';