SQL Server ALTER COLUMN NOT NULL не имеет никакого эффекта
Дизайнеры стола SOME_TABLE
не определили первичный ключ, и что еще хуже, они установили один из столбцов, который мог бы определить первичный ключ как NULLable (остальные в порядке).
Данные для SOME_TABLE.PrinterPos
не содержит никаких NULL
ценности.
Я пишу скрипт обновления для применения к ~50 базам данных.
Следующий код не работает:
ALTER TABLE dbo.SOME_TABLE
ALTER COLUMN PrinterPos smallint NOT NULL;
ALTER TABLE dbo.SOME_TABLE
ADD CONSTRAINT PK_SOME_TABLE
PRIMARY KEY CLUSTERED (SOME_TABLE_ID ASC, Store_ID ASC, PrinterPos ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
Я получаю сообщение
Невозможно определить ограничение PRIMARY KEY для столбца с нулевым значением в таблице 'SOME_TABLE'.
Похоже, первая команда полностью игнорируется. Хотя сообщения об этом нет.
- Чтобы поместить его в свой пакет, я попытался выполнить первую команду, используя
sp_executesql
безрезультатно. - Если я выполняю первую команду в SQL Server Management Studio, а затем вторую, то она выполняется ОК.
Мне нужно, чтобы это изменение было полностью автоматизировано. Как я могу заставить это работать через скрипт?
1 ответ
Попробуйте добавить ключевое слово GO между двумя командами ALTER TABLE