SQL Server: Cannot insert explicit value for identity column in table 'x' when IDENTITY_INSERT is set to OFF.

An INSERT supplied a value for an IDENTITY column.

Seen on: SQL

Meaning

Identity values are generated automatically. Imports/ORMs sending Id = 0 or explicit ids fail unless IDENTITY_INSERT is ON for that table.

Common causes

  • ORM sending a default Id (0)
  • Data migration copying ids
  • Insert lists including the identity column

⚡ Quick fix

  1. Omit the identity column from INSERT
  2. For migrations: SET IDENTITY_INSERT dbo.T ON … OFF
  3. EF Core: configure ValueGeneratedOnAdd

Detailed fix by platform

SQL

  1. sql
    SET IDENTITY_INSERT dbo.Orders ON;
    INSERT INTO dbo.Orders (Id, Total) VALUES (1001, 10);
    SET IDENTITY_INSERT dbo.Orders OFF;

How to diagnose

  1. Insert — Includes the identity column?
  2. Recent change — Did it start after a deploy, upgrade, or configuration change? Compare with the last working version.

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.