カスタム タイマージョブ開発を行う場合の、SharePoint 2010 および 2013 共通の注意事項について記載しておきます。
カスタム タイマージョブの登録は、サイト コレクションなどのフィーチャーの Activated イベントなどを使って行いますが、当該フィーチャーを非アクティブ化した後で再びアクティブ化しようすとるとエラーが発生してアクティブ化できなくなることがあります。
ULSログを確認すると、次のような「アクセスが拒否されました」というエラー情報のエントリーが確認できます。
この事象については、マイクロソフト社の KB に情報が公開されていますので詳細は下記を確認してください。
SharePoint 2010 から導入された新しいセキュリティ機能の影響で、Microsoft.SharePoint.Administration 名前空間内の SPPersistedObject から派生したオブジェクトへのあらゆる変更はブロックされ、コンテンツを保持するWebアプリケーション側から構成データベースを更新することは許可されないようになっています。この新しい機能は、SPWebServie.RemoteAdministratorAccessDenied プロパティで制御されています。
そのため、こうしたエラーが発生した場合は、必要に応じてWindows PowerShell などを使って、このプロパティ値を false に変更し、IISReset を行います。
[SharePoint管理シェルの例]
#RemoteAdministratorAccessDenied プロパティを確認する
>$contentService=[Microsoft.SharePoint.Administration.SPWebService]::ContentService
>$contentService.RemoteAdministratorAccessDenied
#この機能をオフにする
>$contentService.RemoteAdministratorAccessDenied=$false
>$contentService.Update()
>IISRESET
コメント