[Notes/Domino] 設計非表示の情報は複製されない
またまた設計非表示の件で恐縮ですが、会社の人がハマっていたので。
設計非表示で(「式と LotusScript を非表示」にチェックを入れて)設計置換した場合、設計要素は設計非表示状態で複製されるものの、設計非表示かどうかの情報が複製されないことがあるようです。再現手順は以下のとおりです。
再現手順
- DBをサーバーAに新規作成します。
- そのDBのレプリカをサーバーBに作成します。
- サーバーAのDBを「式と LotusScript を非表示」にチェックを入れて設計置換します。
- サーバーBと複製します。
この状態でサーバーBのDBを見ると、設計要素のソースコードは見られなくなっていますが、DBプロパティの起動情報が見えていたり、デザイナーで開けたり、文書のプロパティからフィールドの中身が見えたりしてしまいます。
設計非表示にする前にレプリカを作成してしまうと、そのレプリカには非表示かどうかの情報が反映されない、というわけです。これは、設計非表示のフラグが含まれる DBREPLICAINFO 構造体が複製情報のところにあり、それが複製されないから、ということではなかろうかと推測されます。(どうもこれ以外にもどこかに情報を持っているような感じですが……。)
対策
可能であれば、サーバーBのレプリカをいったん削除して、再度レプリカを作成し直すのがよいかもしれません。(ただし、(未読情報を複製するように設定していない場合、)未読情報は消えますが。)
レプリカの作成し直しができなければ、サーバーBのレプリカを「式と LotusScript を非表示」にチェックを入れて設計置換すればよいです。この場合は、サーバーBの設計要素の更新者・更新日がすべて変わってしまうため、サーバーBからサーバーAに設計要素がすべて複製されます。
(ちなみに、サーバーBのDBに対して、以前紹介した設計非表示を解除する方法の逆(Call HideDesign(db, True))をやってみたところ、起動情報しか非表示になりませんでした……。REPLFLG_HIDDEN_DESIGN のビットを立てるだけではダメっぽいです。NSFHideDesign を使用する方法ではうまくいきますが、この方法でも更新者・更新日は変わってしまうため、あまり意味はないでしょう。)
文書のプロパティを見られなくする目的で設計非表示にしている場合(←この方法はそもそもセキュリティ的に不完全ですが)は、けっこう落とし穴になるかもしれません。みなさまもご注意を……。
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。