我有很多Lotus Notes / Domino(版本7)数据库要迁移到新软件。 在我的工作站上(安装了Lotus Notes),我使用独立的Java应用程序将本地副本连接到提取数据。 但是,远程数据库的复制仍然是手动过程。我想自动化它。
我的java代码基本上是这样的:
Session localSession = NotesFactory.createSession(); // With Notes thread initialized
Session remoteSession = NotesFactory.createSession(SERVER, USER, PASSWORD);
Database localDb = localSession.getDbDirectory(null).openDatabase("local_name", true);
Database remoteDb = remoteSession.getDbDirectory(null).openDatabaseByReplicaID(REPLICA);
// ***EDITED CALLING INSTANCE BELOW***
remoteDb.createReplica(null, "local_name"); // Error thrown here
然而,最后一行抛出一个异常(来自memroy,但类似的东西)
CN=****/***** does not have the right to create database on a server
我怎么可能无法在本地计算机上创建数据库?
还有其他方法可以从远程数据库中以编程方式创建本地副本吗?
编辑:更改了创建副本的调用实例以匹配导致问题的代码
答案 0 :(得分:0)
我的猜测是它只是给你错误的错误信息。有一件事是绝对错误的,他对createReplica的第一个参数应该是一个空字符串,而不是一个空指针。即,试试这个:
localDb.createReplica("", "local_name");
答案 1 :(得分:0)
好吧,看起来我找到了答案。
AFAIU我必须使用本地会话在目标服务器上打开数据库,然后从此处运行createReplica()。这样,createReplica在我的本地Lotus Notes服务器上执行,副本在本地创建。
Session localSession = NotesFactory.createSession((String)null, (String)null, PASSWORD);
DbDirectory remoteDbDirectory = localSession.getDbDirectory(remoteSession.getServerName());
Database localSessionRemoteDatabase = remoteDbDirectory.openDatabaseByReplicaID(REMOTE_REPLICA_ID);
localSessionRemoteDatabase.createReplica("", LOCAL_FILE_NAME);
@Richard Schwartz你能证实这没问题吗?
唯一奇怪的是,它会打开一个提示(就像它预期的密码一样),但副本已经创建。 该过程在Eclipse中执行。