Я пытаюсь запустить команду alter, как показано ниже, за исключением того, что эта таблица содержит 40 миллионов строк, и запрос выполняется навсегда.Измените таблицу с миллионами строк со значением по умолчанию
ALTER TABLE [dbo].[ConsumerProduct]
ADD IsPendDefault [bit] NOT NULL DEFAULT ((0))
GO
Поэтому я думал, что сделать то изменить с нулем, чем обновление каждый столбец 40 миллионов строк в партиях от 5000 и чем изменить его обратно не равно нулю.
Что-то вроде этого
ALTER TABLE [dbo].ConsumerProduct
ADD IsPendDefault [bit] NULL
GO
SET ROWCOUNT 10000
WHILE (1=1)
BEGIN
BEGIN TRANSACTION
UPDATE ConsumerProduct
SET IsPendDefault = 0
WHERE IsPendDefault IS NULL
-- Update 1000 nonupdated rows
IF @@ROWCOUNT = 0
BEGIN
COMMIT TRANSACTION
BREAK
END
COMMIT TRANSACTION
END
ALTER TABLE [dbo].ConsumerProduct
ALTER COLUMN IsPendDefault [bit] NOT NULL
GO
Даже этот запрос принимает навсегда. Есть ли более простой способ изменить таблицу со значением по умолчанию в столбце.
Я использую SQL Server 2012.
Я бы использовал первичный ключ в обновлении where where и update в пакетах. Я бы сделал каждую партию автономной операцией и не полагался на цикл. Получите следующий 100 000 вариантов диапазона. –