我在服务器1中有一个数据库,它引用服务器2中的多个数据库以进行记录验证。当计划的代理程序运行时,它会遇到“未设置对象变量”错误。但是,当我尝试手动运行代理时(右键单击代理名称,单击“运行”),它可以顺利运行而不会出现错误。
我在2个虚拟服务器中模拟了数据库设置,并能够重现错误。逐行调试显示尝试在其他服务器中打开数据库时发生错误。由于手动运行顺利,我不认为代码或变量(服务器和数据库路径)是错误的。
我检查所有数据库的ACL以包括签名者和服务器,还尝试安排在所有3种安全模式下运行代理(受限制,不受限制和受限制的管理员权限)。我查看了服务器文档和安全性,并允许访问和从两个服务器访问。还有其他我可能错过的东西吗?
答案 0 :(得分:7)
让我们调用代理运行“server1”的服务器,以及存储数据库“server2”的服务器。问题是代理程序是在签名它的用户的身份下运行的,server1已经验证了该签名,但server2没有。 Server2需要知道签名,以便它可以在数据库上强制执行ACL,因此server2必须从server1获取签名信息。但是server1理论上可以骗到server2,所以默认情况下server2不信任来自server1的签名信息。
幸运的是,有一种方法可以告诉server2信任在server1上运行的代理上的签名。在server2上Domino目录中的server2的Server Document中,转到Security选项卡,找到标记为“Trusted Servers”的字段。在此字段中输入server1的完全限定名称,然后重新启动server2。 (我不确定是否真的需要重启。)
这应该允许server1上的代理读取server2上的数据库。