Alterar o comprimento do varchar na tabela de produção ao vivo

25

Eu tenho um servidor de banco de dados do MS SQL Server 2008 R2 atualmente em uso com um aplicativo de produção.

Um novo aprimoramento para o aplicativo agora exige que uma varchar(100)coluna em uma tabela seja aumentada em tamanho.

O comprimento dessa coluna existente no banco de dados prod pode ser aumentado sem afetar os dados atuais?

Essa alteração precisa ser concluída fora do horário comercial para evitar interrupções no serviço?

anataliocs
fonte

Respostas:

42

Se você está aumentando para varchar(100 - 8000)(ou seja, algo diferente de varchar(max)) e está fazendo isso através do TSQL, em vez da GUI do SSMS

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

e não alterar a condição de nulidade da coluna a partir NULLde NOT NULL(o que seria bloquear a tabela, enquanto todas as linhas são validados e potencialmente escrito para ) ou a partir NOT NULLde NULL em algumas circunstâncias, então este é um metadados rápida única mudança. Pode ser necessário aguardar um SCH-Mbloqueio na mesa, mas, uma vez adquirido, a alteração será praticamente instantânea.

Uma ressalva a ser observada é que, durante a espera por um SCH-Mbloqueio, outras consultas serão bloqueadas em vez de pular a fila à frente, portanto, você deve considerar adicionar uma SET LOCK_TIMEOUTprimeira.

Verifique também na ALTER TABLEinstrução que você especificou explicitamente NOT NULLse esse é o estado original da coluna, caso contrário, a coluna será alterada para permitir NULL.

Martin Smith
fonte
Obrigado pela resposta rápida, estava apenas verificando. Foi quase instantâneo.
Anataliocs 14/03/12