Estou usando o SQL Server 2008 e preciso aumentar o campo VARCHAR, de (200 a 1200) em uma tabela com cerca de 500 mil linhas. O que preciso saber é se há algum problema que não considerei.
Usarei esta instrução TSQL:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Eu já experimentei em uma cópia dos dados e esta declaração não teve nenhum efeito nocivo que eu pudesse ver.
Então, há algum problema possível em fazer isso que eu não tenha considerado?
A propósito, a coluna não está indexada.
sql-server
sql-server-2008
varchar
alter-column
Paul T Davies
fonte
fonte
Respostas:
Esta é uma alteração de metadados apenas: é rápida.
Uma observação: especifique NULL ou NOT NULL explicitamente para evitar "acidentes" se uma das configurações SET ANSI_xx for diferente, por exemplo, executar em osql e não SSMS por algum motivo
fonte
varchar(200)
paravarchar(max)
?Só queria adicionar meus 2 centavos, já que pesquisei essa questão no Google porque me encontrei em uma situação semelhante ...
ESTEJA CIENTE de que mudar de
varchar(xxx)
paravarchar(yyy)
é uma mudança de metadados, mas mudar paravarchar(max)
não é. Porque osvarchar(max)
valores (também conhecidos como valores BLOB - imagem / texto etc.) são armazenados de forma diferente no disco, não dentro de uma linha da tabela, mas "fora da linha". Assim, o servidor enlouquecerá em uma grande mesa e não responderá por minutos (horas).--no downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) --huge downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)
PS. o mesmo se aplica a
nvarchar
ou curso.fonte
Mudar para Varchar (1200) de Varchar (200) não deve causar nenhum problema, pois é apenas uma alteração de metadados e como o SQL server 2008 trunca espaços em branco excessivos, você também não deve ver diferenças de desempenho, portanto, em resumo, não deve haver problemas em fazer o mudança.
fonte
Outra razão pela qual você deve evitar converter a coluna em varchar (max) é porque você não pode criar um índice em uma coluna varchar (max).
fonte
No meu caso, alter column não estava funcionando, então pode-se usar o comando 'Modify', como:
alterar tabela [nome_tabela] MODIFICAR coluna [nome_coluna] varchar (1200);
fonte