Convert an existing Column to Identity

This solution violates your point 2, but there is no other way and I think your aim is to keep the old values, because nothing else makes sense...

You could do the following:

  1. make it possible to insert into identity columns in your table:

    set identity_insert YourTable ON
    
  2. add a new ID column to your table with identity and insert the values from your old columns
  3. turn identity insert off

    set identity_insert YourTable OFF
    
  4. delete old ID column
  5. rename new column to old name
  6. make it to the primary key

The only problem could be that you have your ID column already connected as foreign key to other tables. Then you have a problem with deleting the old column... In this case you have to drop the foreign key constraints on your ID column after step 3, then do step 4 to 6 and then recreate your foreign key constraints.


As you are using SQL Server 2012, another possible alternative could be to create a sequence object that has a starting value of the highest ID +1 already in your table, then create a default constraint for your column using GET NEXT VALUE FOR and reference your sequence object you just created.