Are you using SQL 2012 or higher? If so,
this bug report[
^] might be relevant. It refers to "failover", but the problem seems to affect non-clustered instances as well.
In SQL Server 2012 the implementation of the identity property has been changed to accommodate investments into other features. In previous versions of SQL Server the tracking of identity generation relied on transaction log records for each identity value generated. In SQL Server 2012 we generate identity values in batches and log only the max value of the batch. This reduces the amount and frequency of information written to the transaction log improving insert scalability.
The solution from Microsoft is to add trace flag 272 to the SQL Server startup options. This will cause SQL to use the same identity generation semantics as previous versions. However, it may have a negative impact on the identity generation performance.
Alternatively, you can replace specific identity columns with a sequence created with the
NO CACHE
option.
Database Engine Service Startup Options[
^]
CREATE SEQUENCE (Transact-SQL)[
^]