metricsign
Start free
Medium severityresource

Power BI Refresh Error:
3960

What does this error mean?

A snapshot isolation transaction was aborted because another transaction modified data that the snapshot transaction intended to update.

Common causes

  • 1Two transactions using SNAPSHOT isolation both read the same row and then attempt to update it — only one can win
  • 2Long-running snapshot transactions that overlap with frequent writes to the same tables
  • 3ADF pipeline using snapshot isolation conflicts with concurrent user or ETL updates

How to fix it

  1. 1Step 1: Retry the transaction — error 3960 is inherently transient. Configure the application to retry on this error.
  2. 2Step 2: Shorten the snapshot transaction scope — keep snapshot transactions as brief as possible to reduce the window for conflicts.
  3. 3Step 3: Consider switching from SNAPSHOT to READ COMMITTED SNAPSHOT isolation (RCSI) for read-heavy workloads that don't need full snapshot semantics: ALTER DATABASE [db] SET READ_COMMITTED_SNAPSHOT ON;

Frequently asked questions

Is error 3960 similar to a deadlock?

Not exactly — a deadlock (1205) is a circular wait between two sessions. Error 3960 is a write-write conflict under snapshot isolation where the first writer wins and the second is aborted.

Does RCSI also cause error 3960?

No — RCSI (Read Committed Snapshot Isolation) uses row versioning for reads but does not guarantee snapshot read consistency across multiple statements. True SNAPSHOT isolation (BEGIN TRANSACTION WITH SNAPSHOT) is what causes 3960.

How do I enable SNAPSHOT isolation on a database?

ALTER DATABASE [db] SET ALLOW_SNAPSHOT_ISOLATION ON; — then in the session: SET TRANSACTION ISOLATION LEVEL SNAPSHOT; BEGIN TRANSACTION;

Official documentation: https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-3960-database-engine-error

Other resource errors