我们有一个 SP 计时器作业,运行良好一段时间。最近,管理员在场中加入了另一台服务器,因此 SharePoint 决定开始在此另一台服务器上运行此计时器作业。问题是服务器上没有安装所有依赖项(即 Oracle),因此作业失败。我只是在这里寻找阻力最小的路径。我的问题是有没有办法强制计时器作业在您想要的服务器上运行?
[Edit]如果我可以通过适合我的代码来做到这一点。我只需要知道执行此操作的 API(如果确实存在)是什么。
如果我是在追求显而易见的事情,我深表歉意;我只是还没有看到有人深入研究它。
约束自定义计时器作业(即,从 SPJobDefinition 派生的您自己的计时器作业类)是通过控制构造函数参数来完成的。
假设在创建计时器作业期间未指定目标服务器,计时器作业通常在提交它们的服务器上运行(如 vinny 所示)。不过,SPJobDefinition 类型的两个重载构造函数分别接受 SPServer 和 SPJobLockType 作为第三个和第四个参数。正确使用这两个参数将允许您决定作业的运行位置。
通过将目标服务器指定为 SPServer 并将 SPJobLockType 指定为“作业”,您可以限制您创建的计时器作业实例在您选择的服务器上运行。
有关我所描述内容的文档,请参阅 MSDN:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx.
我对您正在运行的代码一无所知,但自定义计时器作业通常是在功能激活期间设置的。我感觉到你的代码库可能不是你自己的(?);如果是这样,您可能需要查找从 SPFeatureReceiver 派生的一个或多个类型/类。在此类类的 FeatureActivated 方法中,您可能会找到实际执行计时器作业实例化的代码。
当然,您还需要查看自定义计时器作业类(或多个类)本身,以了解它们是如何实例化的。有时,开发人员会将类的实例化构建到类本身中(例如,通过工厂方法模式)。不过,在计时器作业类和 SPFeatureReceiver 实现之间,您应该能够找到需要更改的内容。
我希望这有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)