閱讀英文

共用方式為


在 Access 中擷取 SharePoint 清單數據時的問題

徵狀

當您從 Microsoft Access 中的 Microsoft SharePoint 清單要求數據時,可能會收到下列其中一個錯誤訊息:

  • 執行大量查詢或將數據傳送至伺服器時發生錯誤。 重新連接數據表以解決衝突,或捨棄擱置中的變更。
  • 所有 SharePoint 資料表都會中斷連線。
  • 無法更新。 資料庫或物件是唯讀的。
  • Microsoft Office Access 資料庫引擎找不到物件「<鏈接的數據表名稱>」。 請確定這個物件存在,而且您沒有將物件的名稱及路徑拼錯。
  • 鏈接資料表「<連結的數據表名稱>」無法使用。 Microsoft Access 無法連絡伺服器。 請檢查您的網路連線,或連絡伺服器管理員。
  • 您沒有使用「<連結的數據表名稱>」物件的必要許可權。 系統管理員或建立物件的人可為您建立一個適當的權限。

或者,您可能會遇到下列其中一個問題:

  • 當您嘗試開啟鏈接的數據表時,存取會意外結束或當機。
  • 當您嘗試開啟鏈接的數據表時,存取似乎死鎖。

原因

當 Access 從 SharePoint 清單要求列表專案時,Access 會等候一段有限的時間,讓該數據傳回。 具體而言,如果 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 登錄專案

  1. 套用下列 Hotfix 套件:

    (Stslist-x-none.msp) Access 2010 Hotfix 套件的描述:2011 年 6 月 28 日

  2. 開啟登錄 編輯器,然後找出並選取下列登錄子機碼:

    適用於 32 位 Windows 上的 32 位存取或 64 位 Windows 上的 64 位存取

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines

    適用於 64 位 Windows 上的 32 位存取

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines

  3. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  4. 輸入 DataFetchTimeout,然後按 Enter

  5. 以滑鼠右鍵按兩下 [DataFetchTimeout],然後按兩下 [ 修改]

  6. 選取 [基底] 中的 [十進位],在 [值數據] 方塊中輸入 90000,然後按兩下 [確定]

    如果值無法修正問題,請嘗試較大的值。 DataFetchTimeout 以毫秒為單位。

  7. 結束 [登錄編輯程式]。

在 Access 2013 中新增 DataFetchTimeout 登錄專案

  1. 開啟登錄 編輯器,然後找出並選取下列登錄子機碼:

    適用於 32 位 Windows 上的 32 位存取或 64 位 Windows 上的 64 位存取

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines

    適用於 64 位 Windows 上的 32 位存取

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines

  2. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  3. 輸入 DataFetchTimeout,然後按 Enter

  4. 以滑鼠右鍵按兩下 [DataFetchTimeout],然後按兩下 [ 修改]

  5. 選取 [基底] 中的 [十進位],在 [值數據] 方塊中輸入 90000,然後按兩下 [確定]

    如果值無法修正問題,請嘗試較大的值。 DataFetchTimeout 以毫秒為單位。

  6. 結束 [登錄編輯程式]。

在 Access 2016 中新增DataFetchTimeout登錄專案

  1. 開啟登錄 編輯器,然後找出並選取下列登錄子機碼:

    • 針對 MSI 安裝 Access

      適用於 32 位 Windows 上的 32 位存取或 64 位 Windows 上的 64 位存取

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines

      適用於 64 位 Windows 上的 32 位存取

      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 位存取

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines

  2. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  3. 輸入 DataFetchTimeout,然後按 Enter

  4. 以滑鼠右鍵按兩下 [DataFetchTimeout],然後按兩下 [ 修改]

  5. 選取 [基底] 中的 [十進位],在 [值數據] 方塊中輸入 90000,然後按兩下 [確定]

    如果值無法修正問題,請嘗試較大的值。 DataFetchTimeout 以毫秒為單位。

  6. 結束 [登錄編輯程式]。