現象
Microsoft Access で Microsoft SharePoint リストからデータを要求すると、次のいずれかのエラー メッセージが表示されることがあります。
- 一括クエリの実行またはサーバーへのデータの送信に関するエラーが発生しました。 テーブルを再接続して競合を解決するか、保留中の変更を破棄します。
- すべての SharePoint テーブルが切断されます。
- データベースまたはオブジェクトは読み取り専用なので、更新できません。 (エラー 3027)
- Microsoft Office Access データベース エンジンで、オブジェクト 'リンク テーブル名>' が<見つかりませんでした。 オブジェクトが存在していること、名前やパス名が正しいことを確認してください。
- リンク テーブル '<リンク テーブル名>' は使用できません。 Microsoft Access はサーバーに接続できません。 ネットワーク接続を確認するか、サーバー管理者に問い合わせてください。
- '<リンク テーブル名>' オブジェクトを使用するために必要なアクセス許可がありません。 システム管理者またはこのオブジェクトの作成者から権限を取得してください。
または、次のいずれかの問題が発生する可能性があります。
- リンク テーブルを開こうとすると、アクセスが予期せず終了するか、クラッシュします。
- リンク テーブルを開こうとすると、アクセスがデッドロック状態で表示されます。
原因
Access が SharePoint リストからリスト アイテムを要求すると、そのデータが返されるまで、一定期間待機します。 具体的には、Access が 30 秒後に指定されたバッチのデータを受信しない場合、要求が中止され、バッチが新しい要求として再送信される可能性があります。 これらのバッチの送信時に Access でエラーが発生した場合、プログラムは中止し、エラー メッセージを返す可能性があります。
この問題を引き起こす可能性のあるいくつかの条件は次のとおりです。
- たとえば、Microsoft SharePoint Server の正常性に問題があります。たとえば、動作が遅くなります。
- 帯域幅が低い接続があります。
- 大規模または複雑な SharePoint リストまたはドキュメント ライブラリがあります。
- サーバーとの間には長い距離があります。
- SharePoint リストまたはドキュメント ライブラリには、255 を超える列があります。
- SharePoint Online を使用すると調整されます。 SharePoint Online での調整の詳細については、「SharePoint Online で 調整またはブロックされないようにする」を参照してください。
解決方法
この問題を解決するには、次のいずれかの方法を使用します。
方法 1: 問題の原因となる可能性のある条件を回避して、応答時間を短縮します。
方法 2: SharePoint のビューを使用し、Access をそのビューにリンクすることで、サーバーから要求されるデータの量を減らします。
SharePoint ビューを使用するリンク テーブルを作成する方法の詳細については、「 ImportSharePointList マクロ アクション」を参照してください。
方法 3: DataFetchTimeout レジストリ エントリを追加して、Access のタイムアウトを増やす
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。
注:
DataFetchTimeout レジストリ エントリは、もともと、Access がキャッシュされたデータを SharePoint リストと同期する場合にのみ、読み取り要求に適用されます。 Access 2016クイック実行ビルド 16.0.9215.5830 以降では、このレジストリ エントリは挿入、更新、および削除操作にも適用されます。
Access 2010 に DataFetchTimeout レジストリ エントリを追加する
次の修正プログラム パッケージを適用します。
Access 2010 修正プログラム パッケージ (Stslist-x-none.msp) の説明: 2011 年 6 月 28 日
レジストリ エディターを開き、次のレジストリ サブキーを見つけて選択します。
32 ビット Windows の場合は 32 ビット アクセス、64 ビット Windows では 64 ビット アクセスの場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines
64 ビット Windows の 32 ビット Access の場合
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines
[編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
「DataFetchTimeout」と入力し、Enter キーを押します。
[DataFetchTimeout] を右クリックし、[変更] をクリックします。
[基本] で [Decimal] を選択し、[値データ] ボックスに「90000」と入力し、[OK] をクリックします。
値で問題が解決しない場合は、より大きな値を試してください。 DataFetchTimeout はミリ秒単位です。
レジストリ エディターを終了します。
Access 2013 に DataFetchTimeout レジストリ エントリを追加する
レジストリ エディターを開き、次のレジストリ サブキーを見つけて選択します。
32 ビット Windows の場合は 32 ビット アクセス、64 ビット Windows では 64 ビット アクセスの場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines
64 ビット Windows の 32 ビット Access の場合
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines
[編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
「DataFetchTimeout」と入力し、Enter キーを押します。
[DataFetchTimeout] を右クリックし、[変更] をクリックします。
[基本] で [Decimal] を選択し、[値データ] ボックスに「90000」と入力し、[OK] をクリックします。
値で問題が解決しない場合は、より大きな値を試してください。 DataFetchTimeout はミリ秒単位です。
レジストリ エディターを終了します。
Access 2016に DataFetchTimeout レジストリ エントリを追加する
レジストリ エディターを開き、次のレジストリ サブキーを見つけて選択します。
Access の MSI インストールの場合
32 ビット Windows の場合は 32 ビット アクセス、64 ビット Windows では 64 ビット アクセスの場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines
64 ビット Windows の 32 ビット Access の場合
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines
Access のクイック実行インストールの場合
32 ビット Windows の場合は 32 ビット アクセス、64 ビット Windows では 64 ビット アクセスの場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines
64 ビット Windows の 32 ビット Access の場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines
[編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
「DataFetchTimeout」と入力し、Enter キーを押します。
[DataFetchTimeout] を右クリックし、[変更] をクリックします。
[基本] で [Decimal] を選択し、[値データ] ボックスに「90000」と入力し、[OK] をクリックします。
値で問題が解決しない場合は、より大きな値を試してください。 DataFetchTimeout はミリ秒単位です。
レジストリ エディターを終了します。