(Cannot update. Database or object is read-only) error in a query against a linked SharePoint view if there are unlinked lookup fields in Access – Microsoft 365 Apps

Microsoft Technical Article






Technical Advisory: Access SharePoint Linked View Read-Only Error

1. Overview

🚀 When utilizing Microsoft Access as a front-end for SharePoint data management, IT administrators may encounter a specific roadblock where update queries fail to execute. This issue typically manifests when an administrator links Access to a specific SharePoint View rather than the entire list. If the underlying SharePoint list contains lookup columns that were excluded from the specific view being linked, Access may incorrectly flag the connection as a read-only object. This prevents users from performing any write operations, resulting in the error: “Cannot update. Database or object is read-only.”

2. Key Technical Details

⚙️ The root of this behavior lies in how Microsoft Access handles data integrity and relational mapping during the synchronization process with SharePoint. Understanding the internal logic is essential for troubleshooting:

  • Macro Triggers: The issue is triggered when using the ImportSharePointList macro action (available in Access 2016 and later) or the TransferSharePointList action (used in Access 2013 and earlier versions).
  • Lookup Mapping Logic: When Access links to a SharePoint view, it attempts to generate internal linked tables for every lookup column associated with that view to ensure relational consistency.
  • Validation Overreach: Before executing an update query, Access performs a validation check against the underlying list’s schema. It looks for linked tables corresponding to all lookup fields in the source list.
  • Connection Severance: If a lookup field exists in the source list but is missing from the linked view, Access fails to find the expected linked table. Rather than ignoring the irrelevant field, the application severs the write-access connection to the database to prevent potential data corruption, defaulting the status to “Read-Only.”

3. Impact

⚠️ This behavior directly impacts database workflows and automated update queries. Users will find themselves unable to modify records, even if the fields they are attempting to update have no relation to the missing lookup columns. To restore write functionality, administrators must ensure Access has a reference point for all lookups in the parent list.

🛡️ Workaround Method 1: Comprehensive Lookup Linking
The most effective solution is to force Access to recognize all lookup tables before linking the filtered view. Follow these administrative steps:

  1. Establish a link to the entire SharePoint list initially. This forces Access to create all necessary linked tables for every lookup column in the schema.
  2. Locate the main linked table for the SharePoint list in the Access Navigation Pane and delete it. Note: This action removes the main table link but leaves the auxiliary lookup tables intact.
  3. Re-establish the link to the specific SharePoint View using the ImportSharePointList macro. Because the lookup tables already exist in the database from step one, the update query validation will pass.

📅 Workaround Method 2: Cache Management (Legacy Access 2010)
If you are supporting legacy environments using Access 2010, the issue may be related to the web service caching engine. You can bypass this by adjusting the database settings:

  1. Navigate to File > Options.
  2. Select the Current Database category.
  3. Scroll to the Caching Web Service section.
  4. Locate the settings for SharePoint tables and enable the “Never Cache” checkbox.

Read the full article on Microsoft.com