Das können Sie nicht IDENTITY
hinzufügen zu einer bestehenden Spalte. Es geht einfach nicht.
Sie müssen eine neue erstellen Spalte vom Typ INT IDENTITY
und löschen Sie dann die alte Spalte, die Sie nicht mehr benötigen (und benennen Sie die neue Spalte möglicherweise in den alten Namen um - falls erforderlich)
Außerdem:würde ich nicht Tun Sie dies im visuellen Designer - dieser versucht, die Tabelle mit der neuen Struktur neu zu erstellen, kopieren Sie alle Daten (alle 10 Millionen Zeilen) und dann die alte Tabelle löschen.
Es ist viel effizienter, direkte T-SQL-Anweisungen zu verwenden - dies führt eine "In-Place"-Aktualisierung durch, nicht destruktiv (keine Daten gehen verloren) und nicht dabei etwa 10 Millionen Zeilen kopieren müssen...
ALTER TABLE dbo.YourTable
ADD NewID INT IDENTITY(1,1) NOT NULL
Wenn Sie eine neue Spalte vom Typ INT IDENTITY
hinzufügen zu Ihrer Tabelle, dann wird diese automatisch mit fortlaufenden Nummern belegt. Sie können dies nicht verhindern und die Werte später auch nicht aktualisieren.
Keine dieser Optionen ist am Ende wirklich sehr nützlich - Sie könnten mit unterschiedlichen ID-Werten enden ... um dies richtig zu machen, müssten Sie:
- Erstellen Sie die neue Tabelle im Voraus, mit der richtigen Struktur und der
IDENTITY
bereits vorhanden - schalten Sie dann
SET IDENTITY_INSERT (yourtable) ON
ein in dieser Tabelle, damit Werte in die Identitätsspalte eingefügt werden können - kopieren Sie diese Daten von der ursprünglichen Quelle
- Identitätseinfügung wieder ausschalten:
SET IDENTITY_INSERT (yourtable) OFF
Nur mit diesem Ansatz können Sie dieselben IDs in einer IDENTITY-Spalte in Ihrer neuen Tabelle erhalten.