Вы не можете добавить IDENTITY
в существующую колонку. Это просто невозможно.
Вам нужно создать новый столбец типа INT IDENTITY
, а затем удалить старую колонку, вам не нужно больше (и, возможно, переименовать новый столбец на старое имя - если это необходимо)
Также: я бы не сделать это в визуальном дизайнере - это попытается воссоздать таблицу с новой структурой, скопировать за все данные (все 10 миллионов строк), а затем отбросить старую таблицу.
Гораздо эффективнее использовать прямые инструкции T-SQL - это сделает «на месте» обновление, неразрушающее (данные не будут потеряны), а его не необходимо скопировать около 10 миллионов строки в процессе ...
ALTER TABLE dbo.YourTable
ADD NewID INT IDENTITY(1,1) NOT NULL
при добавлении нового столбца типа INT IDENTITY
в таблицу, то она будет автоматически заполняется последовательными номерами. Вы не можете остановить это, и вы также не можете обновлять значения позже.
Ни один из этих вариантов действительно очень полезно, в конце концов, - вы могли бы в конечном итоге с различными значениями ID .... чтобы сделать это правильно, вы должны:
- создать новую таблицу раньше времени, с правильной структурой и
IDENTITY
уже на месте
- затем включите
SET IDENTITY_INSERT (yourtable) ON
на эту таблицу, чтобы значения, которые будут вставлены в столбец идентификаторов
- копию над этими данными из исходного источника
- выключают личность вставить agai n:
SET IDENTITY_INSERT (yourtable) OFF
Только при таком подходе вы сможете получить одинаковые идентификаторы в столбце IDENTITY в своей новой таблице.
Так что-то вроде этого дало вам таймаут? 'alter table TableName add ID int identity (1, 1) primary key' –
Вы можете использовать' ALTER TABLE ... SWITCH', чтобы сделать это почти мгновенно. Даже на 10-миллионной таблице строк. –
Возможный дубликат [как установить автоматическое приращение после создания таблицы без потери данных?] (Http://stackoverflow.com/questions/6084572/how-to-set-auto-increment-after-creating-abtable -without-any-data-loss) –