V současné době se používá produkční aplikace MS SQL Server 2008 R2 DB.
Nové vylepšení aplikace nyní vyžaduje zvětšení sloupce varchar(100)
v tabulce.
Lze prodloužit délku tohoto stávajícího sloupce v prod DB, aniž by to ovlivnilo aktuální data?
Musí být tato změna dokončena mimo pracovní dobu, aby nedošlo k přerušení služby?
Pokud ji zvyšujete na varchar(100 - 8000)
(tj. Cokoli jiného než varchar(max)
) a děláte to přes TSQL místo SSMS GUI
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
a nezměnitelnost sloupce z NULL
na NOT NULL
(které uzamkne tabulku, zatímco jsou všechny řádky ověřeny a případně zapisovány ) nebo z NOT NULL
až NULL
za určitých okolností pak se jedná o rychlou změnu pouze metadat. Možná bude třeba počkat na SCH-M
zamkněte na stole, ale jakmile zjistí, že změna bude do značné míry okamžitá.
Jedním z upozornění je, že během čekání na SCH-M
lock jiné dotazy budou blokovány spíše než přeskočit frontu před ní, takže byste měli zvážit přidání SET LOCK_TIMEOUT
první.
Ujistěte se také v ALTER TABLE
příkaz, který explicitně zadáte NOT NULL
pokud je to původní stav sloupce, jinak bude sloupec změněn, aby umožnil NULL
.