Eu tenho um servidor de banco de dados MS SQL Server 2008 R2 atualmente em uso com um aplicativo de produção.
Um novo aprimoramento do aplicativo agora exige que uma varchar(100)
coluna em uma tabela seja aumentada em comprimento.
O comprimento desta coluna existente no banco de dados prod pode ser aumentado sem afetar os dados atuais?
Essa mudança deve ser concluída fora do horário comercial para evitar a interrupção do serviço?
Se você estiver aumentando para
varchar(100 - 8000)
(ou seja, qualquer coisa diferente devarchar(max)
) e estiver fazendo isso através do TSQL em vez da GUI do SSMSe não alterar a nulidade da coluna de
NULL
paraNOT NULL
(o que bloquearia a tabela enquanto todas as linhas são validadas e potencialmente gravadas em ) ou deNOT NULL
paraNULL
em algumas circunstâncias , essa é uma alteração rápida apenas de metadados. Pode ser necessário esperar por umSCH-M
bloqueio na mesa, mas uma vez adquirido, a mudança será praticamente instantânea.Uma ressalva a ser observada é que, durante a espera por um
SCH-M
bloqueio, outras consultas serão bloqueadas em vez de pular a fila à frente, portanto, você pode considerar adicionar umaSET LOCK_TIMEOUT
primeira.Certifique-se também de
ALTER TABLE
especificar explicitamente na instruçãoNOT NULL
se esse é o estado original da coluna, caso contrário, a coluna será alterada para permitirNULL
.