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 NULLNULL 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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *