DominoエージェントでMySQLのLOAD DATAを実行

下記のようなことを仕事でやっているSEは日本に僕一人しかいないと思うが、万が一同じ問題でつまずいているSEがいたときのために、検索エンジンに引っかかるように記しておく。
Lotus DominoのLotus Scriptで記述したエージェント内で、ADODB経由でドミノとは別サーバのMySQLに接続し、「LOAD DATA」コマンドをADODB.ConnectionオブジェクトのExecuteメソッドで発行したときの問題だ。ポイントは、ドミノとMySQLが別サーバであるという点。
Call oConn.Execute(“LOAD DATA INFILE ‘MySQLServerD$datafile.csv’ (以下略)”)
このような行を含むエージェントを、手元のパソコンのノーツ・クライアントで実行すると、正常に実行され、MySQLのテーブルにテキストファイルの内容が一括読込みされる。
ところが、この全く同じエージェントをスケジューリングして、ドミノサーバ上で定時起動すると、「LOAD DATA」コマンドを発行する行でエラーになって停止する。Dominoのログデータベースに書き出されるメッセージは「OLE: 自動オブジェクトのエラーです」だ。
ノーツ・クライアントを使ってローカルでは問題なく実行できるエージェントが、サーバ上で起動するとエラーになることから考えると、これはドミノのエージェントのセキュリティ制限によるエラーと考えられる。
もちろんこのエージェントのプロパティで、実行権限は最高(セキュリティレベルとしては最低)の「3」に設定してあるのだが、それでも、ドミノサーバとは別サーバであるMySQLサーバ上のファイルを読込むような処理を、その別サーバに対して実行するように命令するのは、Dominoのセキュリティ上不可能と思われる。
その証拠に、読込み対象のファイルをドミノサーバ上にコピーし、ドミノサーバにMySQLサーバへODBC接続する環境を導入してから実行したところ、同じエージェントが問題なく定時起動できるようになった。
注意したいのは、最終的にロードされる先のMySQLは依然としてドミノとは別サーバなのに、ロード対象のテキストファイルが、MySQLサーバ上に存在すればエラーとなり、エージェントが実行されているドミノサーバ上に存在すればエラーにならないということだ。
以上、さて何人の方のお役に立つか...。