Du kan inte lägg till IDENTITY
till en befintlig kolumn. Det går bara inte att göra.
Du måste skapa en ny kolumn av typen INT IDENTITY
och släpp sedan den gamla kolumnen du inte längre behöver (och byt eventuellt namn på den nya kolumnen till det gamla namnet - om det behövs)
Dessutom:Jag skulle inte gör detta i den visuella designern - detta kommer att försöka återskapa tabellen med den nya strukturen, kopiera över all data (alla 10 miljoner rader), och släpp sedan den gamla tabellen.
Det är mycket effektivare att använda raka T-SQL-satser - detta kommer att göra en "på plats" uppdatering, icke-förstörande (ingen data går förlorad), och det gör det inte måste kopiera cirka 10 miljoner rader i processen...
ALTER TABLE dbo.YourTable
ADD NewID INT IDENTITY(1,1) NOT NULL
När du lägger till en ny kolumn av typen INT IDENTITY
till ditt bord, då kommer det automatiskt att fyllas med på varandra följande nummer. Du kan inte stoppa detta från att hända, och du kan inte heller uppdatera värdena senare.
Inget av dessa alternativ är egentligen särskilt användbart, i slutändan - du kan sluta med olika ID-värden... för att göra detta rätt, måste du:
- skapa den nya tabellen i förväg, med rätt struktur och
IDENTITY
redan på plats - aktivera sedan
SET IDENTITY_INSERT (yourtable) ON
på den tabellen för att tillåta att värden infogas i identitetskolumnen - kopiera denna data från den ursprungliga källan
- stänga av identitetsinfogning igen:
SET IDENTITY_INSERT (yourtable) OFF
Endast med detta tillvägagångssätt kommer du att kunna få samma ID i en IDENTITY-kolumn i din nya tabell.