2009年11月27日金曜日

レプリカを一括で作るには


一度にたくさんのDBを検証環境や新規サーバーへ持っていきたい、といった要望はときどきあります。
このような時にNotesのレプリカを利用すると、サーバー稼働中でも比較的安全に持っていくことができます。

今回紹介するのは新規のローカルDBにフォームとアクションボタンをひとつ作るだけの簡単設計です。

フォームには、持っていきたいDBのファイルパスを入力するための複数値可のテキストフィールド "targetlist" と、下のLotus Scriptを実行するアクションボタンを作成します。
Dim ws As New NotesUIWorkspace
Dim ss As New NotesSession
Dim db As NotesDatabase, rep As NotesDatabase
Dim doc As NotesDocument

Set doc = ws.CurrentDocument.Document
If doc Is Nothing Then Exit Sub
On Error Resume Next

Forall target In doc.targetlist
 Set db = ss.GetDatabase("SERVERNAME/ORG/JP", target)
 Set rep = db.CreateReplica("", |sample\\| & target)
 If rep Is Nothing Then
  Print Cstr(target) & "...NG"
 Else
  Print Cstr(target) & "...OK" & " 「" & rep.Title & "」"
  Set rep = Nothing
 End If
End Forall
Print "処理終了"

上のLotus Scriptを実行すると、レプリカをローカルの "sample" フォルダ内へ作成します。

例として "targetlist" フィールドへ次のように入力した場合、
help\help65_admin.nsf
prod\phonebook.nsf
names.nsf

ローカルPCへ作成したレプリカのファイルパスは次のようになります。
sample\help\help65_admin.nsf
sample\prod\phonebook.nsf
sample\names.nsf


もしレプリカの作成先としてローカルPCの外付けHDDを指定したい場合、Notes\Dataフォルダへ予めディレクトリリンク"sample.dir"を作成するなどして、異なるドライブへ直接書き込めるよう工夫することもできますね。

この"sample.dir" とは「X:\SAMPLE (※Xドライブは外付けHDDのドライブレター)」とだけ書かれた(テキストエディタで編集できる)ファイルで、SAMPLE ディレクトリとして見せたい実態(ドライブとフォルダ)を指し示します。

なお、アクセス権が無いなどできちんとレプリカが作成されないとつまらないので、Domino Administrator でフルアクセスアドミニストレータ権限を有効にしておくのがお勧めです。

また、状況は Print でステータスバーに表示していますが、ステータスバーの情報をローカルのログ(log.nsf)へ残すようnotes.iniへ次の2行を加えておくと、後で確認しやすいと思います。
LogStatusBar=1
Console_Log_Enabled=1
状況の記録は Print でなくてもいいと思います。

0 件のコメント:

コメントを投稿