ワークフローと SQL Server デッドロックについて

こんにちは SharePoint サポートの森 健吾 (kenmori) です。今回の投稿では、ワークフローをご使用のお客様より時折発生すると報告のあるデッドロックという現象について説明します。 診断ログの抜粋 07/27/2011 12:06:00.80  w3wp.exe (0x353C)                       0x3170 Windows SharePoint Services    Workflow Infrastructure        72fr UnexpectedWorkflow Save Instance: System.Data.SqlClient.SqlException: トランザクション (プロセス ID 115) が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。     場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)     場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     場所 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     場所 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior…

0

エラー COMException (0x800703FA) 発生に関する原因と対処策について (イベント ID 1530 関連)

こんにちは、SharePoint サポートの森 健吾 (kenmori) です。今回の投降では、以下に記載している COMException (0x800703FA) について、他サイトに記載されているよりも少しだけ深くお話しますので、問題解決にお役立ていただければと思います。   出力されるエラー System.Runtime.InteropServices.COMException (0x800703FA): CLSID {BDEADF26-C265-11D0-BCED-00A0C90AB50F} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 800703fa。   1.  発生シナリオと対処策について 影響箇所としては COM の仕組みを使用するサービス アプリケーション全体であり、この現象が発生するとバックエンド サービスの機能が全く使用できなくなります。 実際にお問い合わせを経験しているのはSearch Service Application, Excel Service, PowerPoint Service などがあり、これらのサービスが影響を受けてしまった場合、結果的にクロールや検索、Office Web Apps、Excel Service を使用したブラウザによるファイルを表示することができなくなるため、システムの稼働に影響する状況を招きます。 また、カスタム コードがサービス アプリケーションやそれに依存するインスタンス (例. コンテンツ ソース etc.) を生成する際にも現象発生する場合があります。急に発生すると慌てることになりますが、対処策はありますので速やかに対処しましょう。   対処策 1) gpedit.msc を実行します。2) 画面左のツリーより "コンピュータの構成" – "管理用テンプレート"…

0

2012 年 12 月の CU がリリースされました

2012 年 12 月の CU がリリースされましたのでお知らせします。 以下のリンクよりダウンロードできます。 注意点 SharePoint Server 2010、SharePoint Foundation 2010 の CU 適用前には SP1 をインストールする必要があります。 MOSS 2007、WSS 3.0 の CU 適用前には SP3 をインストールする必要があります。 SharePoint Server 2010 の CU には SharePoint Foundation 2010 の CU が含まれます。SharePoint Server 2010 with Project Server の CU には SharePoint Server 2010、SharePoint Foundation 2010 の CU が含まれます。いずれか 1…

0

SharePoint の委任コントロール (DelegateControl) を活用する

こんにちは、SharePoint サポートの森 健吾 (kenmori) です。今回の投稿では、委任コントロールを活用するシナリオについてご紹介します。  1.    委任コントロールとは 実は SharePoint には、旧バージョンから委任コントロールという機能が備わっております。これは、簡単に言うと *.master や *.aspx などのファイルを直接書き換えることなく、機能のアクティブ化だけでページの内容を変更することができる機能です。 具体的な例を挙げると以下のような検索ボックスです。WSS 3.0 の標準の検索ボックスは以下となります。  一方、MOSS 2007 グループ作業ポータルを使用している場合の検索ボックスは以下のようになります。 どちらの *.master ページを SharePoint Designer で確認しても、SharePoint:Delegate コントロールとしか記載されていません。 実はこの DelegateControl というのは、機能が有効化されることによってこの領域 (ここでは SmallSearchBoxInput という領域にどのコントロールを描画するかを選べる機能を保持しています。実際に FEATURES フォルダ内を SmallSearchInputBox というキーワードにて、*.xml を絞り込み grep 検索すると、以下のフォルダ内にこの委任コントロールを使用した機能が確認できます。 ContentLightupOSearchBasicFeatureOSearchEnhancedFeature 例えば OSearchEnhancedFeature フォルダ内にある SearchArea.xml を確認します。 <?xml version=”1.0″  encoding=”utf-8″ ?><Elements xmlns=”http://schemas.microsoft.com/sharepoint/“>    <Control        Id=”SmallSearchInputBox”        Sequence=”25″        ControlClass=”Microsoft.SharePoint.Portal.WebControls.SearchBoxEx”        ControlAssembly=”Microsoft.SharePoint.Portal,…

0

内部エラー (WinWF Internal Error) 発生を想定したSharePoint ワークフローをデザインする

こんにちは SharePoint サポートの森 健吾 (kenmori) です。今回の投稿では、内部エラー (WinWF Internal Error) 発生を想定したSharePoint 2007 および 2010 におけるワークフローをデザインする方法をお伝えします。 少し古くなってしまいますが、前回の投稿 (http://blogs.technet.com/b/sharepoint_support/archive/2011/01/12/sharepoint.aspx) と合わせて、ワークフローの導入前や導入後においても問題を最小限に抑えるためにご確認いただきたい内容をまとめています。   導入 : アプリケーションの内部エラーという宿命 SharePoint ワークフローも、他のアプリケーションと同様内部エラーが発生することがあります。 アプリケーション開発者が、アプリケーションで予期せぬエラーが発生することを全て予期し完全に避けるようコーディングすることは不可能です。そのため、一般的にアプリケーション開発者は、例外処理として該当コードブロック内でエラー発生時にカスタム処理を実装して、予期せぬエラーが発生した場合はログを記載したり、例えばエラーを管理者に通知したり、場合によってはリトライしたりする実装を行います。 C# 例外処理の例 —- try{    // 処理}catch(Exception ex){    // 例外処理} —-  事前に認識しておくべき点として、SharePoint ワークフローは標準機能では診断ログにエラー内容を記録するよう留めています。様々な種類のワークフローが動作する基盤を提供しており、ランタイム側は各処理の重要度がどのようなものかや、エラーの種類 (入力ミスなどを含む) を認識できませんのでやむを得ません。このことから、 Visual Studio 等でカスタマイズ (FaultHandler などを定義) しない限り、標準機能の範囲でエラーを捕捉して独自処理 (特定のアドレスに通知) を実装したり、リトライしたりということはできません。 ただし、エラー終了してしまうことはシステム上やむを得ないとしても、ビジネス フローが止まってしまい、それに気づかずに業務が遅延または処理されないなど影響を与えてしまうことは、業務上あってはならないことです。 SharePoint ワークフローでは、このようにエラーとなったワークフローに対する対処策としては、エラーの原因が入力ミスの場合等を除き、速やかに一旦終了した上で再度開始させるのみとなります。このような問題解決に対する対処をあらかじめ想定しておくことは、ワークフローを使用する上で不可欠になると考えています。また、多くのユーザーの間で、Visual Studio を使用しない範囲でワークフローを使用するにとどめていることも認識しており、そのような条件下においてエラー発生時をシミュレーションした現実的な対処策を練っていく必要があると認識しています。 今回の投稿では、その対処策として考えられるベスト プラクティスとしての一案を共有させていただきたいと考えています。   エラーを想定したワークフロー テンプレートの実装方法…

0

2012 年 10 月の CU がリリースされました

2012 年 10 月の CU がリリースされましたのでお知らせします。 以下のリンクよりダウンロードできます。 注意点 SharePoint Server 2010、SharePoint Foundation 2010 の CU 適用前には SP1 をインストールする必要があります。 MOSS 2007、WSS 3.0 の CU 適用前には SP3 をインストールする必要があります。 SharePoint Server 2010 の CU には SharePoint Foundation 2010 の CU が含まれます。SharePoint Server 2010 with Project Server の CU には SharePoint Server 2010、SharePoint Foundation 2010 の CU が含まれます。いずれか 1…


SharePoint 新着情報 (2012/10/10)

先週リリースされた新着情報をお知らせします。SharePoint と地図の統合については非常に興味深いですね。。 SharePoint 2013 (Technical Preview) MySite Upgrade and Profile Photos SharePoint and Windows Azure Virtual Machines Integrating location and map functionality in SharePoint 2013 Create a map view for the Geolocation field in SharePoint 2013 Get Checkout Files List in Microsoft SharePoint Server 2010


サイトのユーザー情報を強制的に AD と同期させる方法

MOSS 2007 や SharePoint 2010 では、サイトのユーザー情報におけるユーザーの表示名やメールアドレスなどの情報は、プロファイルをインポートすることにより AD と同期させることが可能です。 WSS 3.0 や SharePoint Foundation 2010 では基本的にはユーザーが手動でサイトのユーザー情報を更新して情報を同期する必要があります。   MOSS 2007 や SharePoint 2010 におけるプロファイルの同期の仕組みは次のとおりです。   1. プロファイルのインポート (同期) により AD から SharePoint のユーザープロファイルに情報が取り込まれる。 2. 既定では 1 時間に 1 回実行されているプロファイルの同期タイマージョブによりサイトのユーザー情報に同期される。   この 2 段階のプロセスを経て、最終的にサイトのユーザー情報に情報が反映されます。 なお、上記 2 のプロファイルの同期ジョブでは、既定では「アクティブユーザー」に対してのみ同期処理が実行されます。 SharePoint ではユーザーが「アクティブ ユーザー」かどうか、コンテンツ データベースの UserInfo テーブルで管理しており、「アクティブユーザー」に対しては tp_IsActive フラグが 1 に設定されます。  …


SharePoint 2010 で期待どおりの検索結果が得られない

SharePoint 2010 で何故か検索思ったようにヒットしない、MOSS 2007 の時と微妙に違う結果になる、、という現象に悩まされたときは、以下の KB で紹介されてる対処方法で改善されるかもしれません。  SharePoint 2010: People search does not return expected results in Japanese versionhttp://support.microsoft.com/kb/2723923SharePoint 2010 ではコンテンツの内容から自動的にインデックス処理時のワードブレーカーを選択する追加機能が実装されたのですが、コンテンツの内容によってはこれが期待どおりの動作をせず、日本語のコンテンツが誤って中国語などのワードブレーカーで処理されてしまうことがあります。この場合、ブラウザの言語設定が日本語の環境だとクエリのワードブレーク結果とインデックスのワードブレーク結果が一致せず、コンテンツがヒットしない現象が発生します。 クロールコンポーネントのレジストリ変更後、インデックスのフルクロールが必要となるので大規模な環境で気軽に試せない場合、検証環境があれば、その環境に同じコンテンツを移行して対応策が有効なものか、動作確認することが可能です。


MOSS 2007 SP3 適用に伴う問題

特定の条件において、MOSS 2007 SP3 適用時に構成ウィザードの実行に非常に長い時間を要するとともに、検索データベースのトランザクションログが肥大化する症状が報告されています。   [背景] MOSS 2007 では大量のコンテンツをクロールする際に、クロールキューに溜まったデータを一括ですべて処理できないため、バッチ処理としてある程度のまとまりごとに処理を行います。この時、内部でバッチ ID を割り振って検索データベースの MSSBatchHistory テーブルにデータを格納して管理するのですが、既知の制限として、MSSBatchHistory テーブルの情報がリセットされず、BatchID が int 型の制限を超えてしまいクロールに失敗するという問題がありました。このため、2011 年 4 月の CU でこの問題が修正されています。   この修正では以下の修正が施されています。   ・MSSBatchHistory テーブルの BatchID カラムのデータ型を Int 型から BigInt 型に変更します。 ・クロール毎に MSSBatchHistory テーブルをリセットするようになりました。   [問題点] この修正の影響により、SP3 を含む、2011 年 4 月の CU 以降の修正を適用した場合、構成ウィザード実行時に BatchID カラムのデータ型が Int 型から BigInt 型に変更されるため、MSSBatchHistory テーブルが肥大化している環境では構成ウィザードの実行に非常に長い時間を要するとともに、検索データベースのトランザクションログが肥大化する問題に遭遇する可能性があります。   [対応策] 以下の…