You can check the MSDN itself:
...
"Reuse of values – For a given identity property with specific
seed/increment, the identity values are not reused by the engine. If a
particular insert statement fails or if the insert statement is rolled
back then the consumed identity values are lost and will not be
generated again. This can result in gaps when the subsequent identity
values are generated. "
"These restrictions are part of the design in order to improve
performance, and because they are acceptable in many common
situations. If you cannot use identity values because of these
restrictions, create a separate table holding a current value and
manage access to the table and number assignment with your
application."
And I think the simple reason is that the seed is not set back for that colum, because it is generated like:
Each new value is generated based on the current seed & increment
Changing the seed
value could cause more chaos with concurrent inserts, and comibend with UNIQUE
or PRIMARY KEY
, and insert could "die" more easily, specially in a transaction heavy enviroment.