Вы меняете таблицу, а не ограничение. Management Studio позаботится о других вещах для вас (обратите внимание, что он должен отказаться от таблицы и заново создать ее, поэтому, если таблица большая, будьте готовы взять кофе и поторопиться и подождать).
- Щелкните правой кнопкой мыши таблицу в обозревателе объектов и выберите Design
- Щелкните правой кнопкой мыши столбец, который вы хотите быть личность и выберите Свойства
В панели свойств, в разделе "Удостоверение колонке", выбрать правильный столбец:
Нажмите значок Сохранить (или Ctrl + S):
Обратите внимание, что вам также может потребоваться отменить выбор «Инструменты»> «Дизайнеры»> «Дизайнеры таблиц и баз данных»> «Предотвратить сохранение изменений, требующих повторного создания таблицы».
Обычно я хотел бы предложить внести изменения в схему, используя DDL вместо хоккея и ошибки охваченного GUI, но это один редкий случай, когда графический интерфейс на самом деле требует меньше работы, чем вводить необходимые команды будут ,Изменение свойства IDENTITY - это то, что DDL просто не догнал, и глупость, которую он должен сделать, чтобы обойти его, смешна (в этом случае я добавил новый столбец и записал сценарий изменений, необходимых для того, чтобы сделать тождество столбец вместо этого - и вы даже не можете увидеть всю ерунду здесь, из-за не-перезначительный диалог):
Вот фактический сценарий (не то, что вы, вероятно, хотите запустить очень часто, никогда ум придумал самостоятельно):
/* To prevent any potential data loss issues, you should review this script in detail
before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_foo
(
ID int NOT NULL,
[Foo INT] int NOT NULL IDENTITY (1, 1)
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_foo SET (LOCK_ESCALATION = TABLE)
GO
SET IDENTITY_INSERT dbo.Tmp_foo OFF
GO
IF EXISTS(SELECT * FROM dbo.foo) EXEC('INSERT INTO dbo.Tmp_foo (ID)
SELECT ID FROM dbo.foo WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.foo
GO
EXECUTE sp_rename N'dbo.Tmp_foo', N'foo', 'OBJECT'
GO
ALTER TABLE dbo.foo ADD CONSTRAINT
PK__foo__3214EC274CF5691D PRIMARY KEY CLUSTERED
(ID) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
COMMIT
Спасибо, что сработало! действительно ненавижу организацию управления, не уверен, почему поле не редактируется там, где я искал ... – Rhs
@Rhs, потому что столбец IDENTITY является свойством таблицы, а не ограничением. –
@Rhs На самом деле, согласно http://msdn.microsoft.com/en-us/library/ms187742.aspx, раздел «IDENTITY», «Вы не можете изменить существующий столбец таблицы, чтобы добавить свойство IDENTITY». Это означает, что Management Studio фактически работает в фоновом режиме, если вы изменяете этот параметр для существующей таблицы: переименование таблицы, создание новой с измененным параметром идентификации, копирование всех данных из переименованного оригинала в новую таблицу, а затем удаление переименованную таблицу. Это может быть дорогостоящим действием для больших таблиц, поэтому я предполагаю, что он не включен на экране свойств, на который вы ссылаетесь. – FrankPl