我们有一个SP计时器工作,运行良好一段时间.最近,管理员将另一台服务器加入了服务器场,因此SharePoint决定开始在另一台服务器上运行此计时器作业.问题是服务器上没有安装所有依赖项(即Oracle),因此作业失败.我只是在寻找阻力最小的路径.我的问题是有一种方法可以强制计时器作业在你想要的服务器上运行吗?
[编辑] 如果我可以通过适用于我的代码来完成.我只需要知道API是什么,如果确实存在的话.
如果我正在推动明显的事情,我道歉; 我还没有看到有人深入研究它.
通过控制构造函数参数来约束自定义计时器作业(即,您自己的从SPJobDefinition派生的计时器作业类).
计时器作业通常在提交它们的服务器上运行(如vinny所示),假设在创建计时器作业期间未指定目标服务器.但是,SPJobDefinition类型的两个重载构造函数分别接受SPServer和SPJobLockType作为第三个和第四个参数.正确使用这两个参数将允许您指定作业运行的位置.
通过将目标服务器指定为SPServer并将SPJobLockType指定为"作业",您可以约束您创建的计时器作业实例,以在您选择的服务器上运行.
有关我所描述内容的文档,请参阅MSDN:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx.
我对您正在运行的代码一无所知,但通常在功能激活期间设置自定义计时器作业.我觉得你的代码库可能不是你自己的(?); 如果是这样,您可能希望查找从SPFeatureReceiver派生的一个或多个类型/类.在此类的FeatureActivated方法中,您可以找到实际执行计时器作业实例化的代码.
当然,您还需要查看自定义计时器作业类(或类)本身,以了解它们是如何实例化的.有时开发人员会将类的实例化构建到类本身中(例如,通过Factory Method模式).但是,在计时器作业类和SPFeatureReceiver实现之间,您应该找到需要更改的内容.
我希望有所帮助!