Minulla on tuotantosovelluksen kanssa tällä hetkellä MS SQL Server 2008 R2 DB -palvelin.
Uusi sovelluksen parannus vaatii nyt taulukon varchar(100)
-sarakkeen pituutta.
Voiko tämän pituuden prod DB: n olemassa olevaa saraketta voidaan lisätä vaikuttamatta nykyisiin tietoihin?
Pitääkö tämä muutos suorittaa aukioloaikoina palvelun häiriöiden välttämiseksi?
Vastaa
Jos lisäät sen arvoon varchar(100 - 8000)
(ts. Mitä tahansa muuta kuin varchar(max)
) ja teet tämän TSQL: n kautta SSMS: n GUI: n kautta
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
eikä sarakkeen mitätöitavuutta muuteta arvosta NULL
arvoon NOT NULL
( joka lukitsisi taulukon, kun kaikki rivit on validoitu ja mahdollisesti kirjoitettu ) tai NOT NULL
– NULL
joissakin olosuhteissa , tämä on nopea metatietojen muutos. Se saattaa joutua odottamaan SCH-M
-lukkoa pöydälle, mutta kun se huomaa, että muutos on melko välitön.
Yksi varoitus, jonka on oltava tietoinen, on
-lukituksen odottamisen aikana muut kyselyt estetään estetään pikemminkin kuin hypätään jonoon eteenpäin, joten sinun kannattaa harkita SET LOCK_TIMEOUT
ensin.
Varmista myös kohdassa ALTER TABLE
lauseke, jonka määrität nimenomaisesti NOT NULL
, jos se on alkuperäinen sarakkeen tila, koska muuten sarake muutetaan sallimaan NULL
.