機能強化された@UserRoles関数の不思議

DBにおける自分のロールを表示する
では、@UserRoles関数の動きを説明した。
Notes 8になって、この関数が機能強化されたとのことで、試してみた・・・

が、やっぱりローカルでは動作しない。
なぜ???と、よ~くデザイナーヘルプを眺めてみると・・・
「サーバー上のデータベースまたはローカルの複製されたデータベースの場合は、現在のユーザーが持つロールのリストが返されます。ロールは、データベースのアクセス制御リスト内に定義されています。」
とある。

ん?どうやら、レプリカのDBでないと、ローカルでは動作しないようだ。
・・・ということで、早速サーバにあるDBをローカルに複製してみる。

おぉ!@UserRoles関数が動作するではないか!!

ここでちょっと考えてみた。
このDB、サーバにあるDBを削除したらどうなるんだろう?動くのかな?

はい。削除してみました。
結果・・・

サーバ上のDBを削除しても、ローカルレプリカのDBでは、@UserRoles関数は動作しました。
こうなってくると、ローカルに作成したDBとローカルレプリカのDBの違いは何だろう?

データベースのプロパティ、複製の設定を見てみたが、変わったところはない。
うーん。何でだろう???

誰か知ってたら教えて!

コメント

匿名 さんのコメント…
こんにちは。

6.5の環境しかないのでR8での設定はわかりませんが、アクセス制御リスト画面の「詳細」の中のチェックボックス「このデータベースのレプリカはすべて共通のアクセス制御リストを用いる」にチェックをつけるとACL設定がローカルDBでも有効になります。
レプリカDBではないローカルDBの場合(システム管理サーバの指定がないDB全般かも?)は個人アドレス帳を参照して権限チェックされるようです。
恐らく上記チェックがついているのではないでしょうか?

万が一質問の意図を読み違えていたらごめんなさい。
御代政彦(Masahiko Miyo) さんの投稿…
わろさん、コメントありがとうございます。

@UserRoles関数はR8で機能強化されていて、ローカル環境でも動作すると言うことになったのです。
ただし、サーバDBのレプリカでないとダメだよ。ということなのです。

ここで、サーバDBのレプリカをローカルに作成した後、サーバ上のDBを削除しても、ローカルのDBで@UserRoles関数は動作するのか?という事を試してみたのです。

結果として、サーバDBのレプリカの場合、サーバ上のDBを削除した後も、ローカルDBは@UserRoles関数が有効であったと言うことで、ローカルに新規作成されたDBと何が違うのだろうか?という疑問なのです。

なので、ACLの「このデータベースのレプリカ~」のチェックは関係ありませんでした(付いていても付いていなくても結果は同じ)。
匿名 さんのコメント…
こんにちは。

やはり間違っていましたね。
失礼致しました^^;