Identity values don't participate in transactions - so if you've had a large number of attempted inserts (after all current rows were added) that have subsequently been rolled back, then IDENT_CURRENT
can be much higher than the highest observed value in the table.
Similarly, if you'd actually inserted 2147483647 rows but then deleted all rows with an ID
greater than 6728550, you'd observe the same situation.
Thirdly, someone may have reseeded the identity to be 2147483647.
So there are many ways you may have reached this situation. It's impossible for us to know how it came about.
To set the identity value to be appropriate for the next insert, use DBCC CHECKIDENT
twice:
DBCC CHECKIDENT(Table,RESEED,1)
DBCC CHECKIDENT(Table,RESEED)
The first sets the next value to use as 2. The second then invokes this part:
If the current identity value for a table is less than the maximum identity value stored in the identity column, it is reset using the maximum value in the identity column. See the 'Exceptions' section that follows.