Modifica la lunghezza di varchar nella tabella prod live


25

Ho un server DB MS SQL Server 2008 R2 attualmente in uso con un'app di produzione.

Un nuovo miglioramento dell'app richiede ora che una varchar(100)colonna in una tabella sia aumentata in lunghezza.

È possibile aumentare la lunghezza di questa colonna esistente nel DB di prod senza influire sui dati attuali?

Questa modifica deve essere completata durante le ore non lavorative per evitare interruzioni del servizio?

Risposte:


42

Se lo si sta aumentando a varchar(100 - 8000)(ovvero qualsiasi cosa diversa da varchar(max)) e lo si sta facendo tramite TSQL anziché tramite la GUI di SSMS

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

e non alterare la nullabilità della colonna da NULLa NOT NULL(che bloccherebbe la tabella mentre tutte le righe sono validate e potenzialmente scritte su ) o da NOT NULLa NULL in alcune circostanze, questo è solo un rapido cambio dei metadati. Potrebbe essere necessario attendere un SCH-Mblocco sul tavolo, ma una volta acquisito il cambiamento sarà praticamente istantaneo.

Un avvertimento di cui tenere conto è che durante l'attesa di un SCH-Mblocco verranno bloccate altre query anziché saltare la coda davanti a sé, quindi potresti prendere in considerazione l'aggiunta di una SET LOCK_TIMEOUTprima.

Assicurati anche ALTER TABLEnell'istruzione che specifichi esplicitamente NOT NULLse quello è lo stato della colonna originale, altrimenti la colonna verrà modificata per consentire NULL.


Grazie per la risposta rapida, stava solo controllando. Era quasi istantaneo.
Anataliocs
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.