W naszej bazie danych istnieje duża tabela, która mniej więcej wygląda tak:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
ale teraz rozmiar pola szeregowego stał się zbyt niski, więc chcę go zmienić na 32. Narzędzie porównywania schematów programu Visual Studio sugeruje wykonanie tego przez:
DROP INDEX ux_production_data_serial ON dbo.production_data;
GO
ALTER TABLE dbo.production_data ALTER COLUMN serial NVARCHAR(32) NOT NULL;
GO
CREATE INDEX ux_production_data_serial ON dbo.production_data(serial ASC);
Czy to jest naprawdę potrzebne? A może bardziej bezpieczny sposób na zrobienie tego?
Czy podczas tworzenia unikalnego indeksu moja tabela zostanie zablokowana? Ponieważ byłby to duży problem (ponieważ tabela ma 30 milionów wierszy i myślę, że odtworzenie indeksu zajmie sporo czasu), ponieważ następne okno konserwacji będzie miało kilka miesięcy w przyszłości. Jakie są moje alternatywy?