Я не полагаю, что можно сделать это. Ваш лучший выбор состоит в том, чтобы создать новый столбец идентификационных данных и скопировать данные по использованию идентификационных данных, вставляют команду (если Вы действительно хотите сохранить старые значения).
Вот достойная статья, описывающая процесс подробно: http://www.mssqltips.com/tip.asp?tip=1397
Таблица заполняется? Если не отбрасывают и воссоздают таблицу.
, Если это заполняется, какие значения уже существуют в столбце? Если они - значения, Вы не хотите сохранять.
Составляют новую таблицу, поскольку Вы требуете его, загружаете записи из Вашей старой таблицы в Вашу новую таблицу и позволяете базе данных заполнить столбец идентификационных данных как нормальный. Переименуйте свою исходную таблицу и переименуйте новую к корректному имени:).
Наконец, если столбец Вы хотите сделать идентификационные данные в настоящее время, содержит значения первичного ключа и уже ссылается другими таблицами, Вы должны будете к полностью ре думать, уверены ли Вы, что это - то, что Вы хотите сделать:)
alter table tablename
alter column columnname
add Identity(100,1)
The solution posted by Vikash doesn't work; it produces an "Incorrect syntax" error in SQL Management Studio (2005, as the OP specified). The fact that the "Compact Edition" of SQL Server supports this kind of operation is just a shortcut, because the real process is more like what Robert & JohnFX said--creating a duplicate table, populating the data, renaming the original & new tables appropriately.
If you want to keep the values that already exist in the field that needs to be an identity, you could do something like this:
CREATE TABLE tname2 (etc.)
INSERT INTO tname2 FROM tname1
DROP TABLE tname1
CREATE TABLE tname1 (with IDENTITY specified)
SET IDENTITY_INSERT tname1 ON
INSERT INTO tname1 FROM tname2
SET IDENTITY_INSERT tname1 OFF
DROP tname2
Of course, dropping and re-creating a table (tname1) that is used by live code is NOT recommended! :)