Se você estiver fazendo isso através de uma instrução T-SQL, como a seguir, nenhuma queda de tabela ocorrerá e você poderá fazê-lo com segurança em um ambiente de produção:
Se você fizer isso através da GUI da tabela de design do SSMS, isso dependerá do script que decidir usar para implementar a alteração. Às vezes, ele insere dados em uma tabela temporária, descarta a tabela original, cria uma nova versão dessa tabela e insere-a novamente na nova. Uma maneira fácil de descobrir o que ele fará é clicar no botão "Gerar script" e observar o T-SQL que planeja executar.
Eu pensei que até o botão "Gerar script" lança um aviso de que você está prestes a soltar uma tabela antes mesmo de mostrar o script.
Nick Chammas
11
Ele lança o erro, mas na verdade não executa o script até você clicar em OK (ou executar ou qualquer outra coisa) na janela com o script. Você pode copiar o script e cancelar a janela que mostra o script.
mrdenny
mas funciona, digamos, uma mudança de float para decimal (n, n)?
Nishanth Shaan
Que efeito isso tem se a tabela for replicada? Presumo que as tabelas de assinantes não atualizem automaticamente?
tmwoods
18
Aumentar a largura da nvarcharcoluna não exigirá uma queda da tabela. Nem qualquer ALTER TABLEoperação. Para obter detalhes sobre restrições ao alterar as propriedades da tabela ou coluna, você pode ler a instrução ALTER TABLE .
Copiei as partes mais relevantes da documentação abaixo:
Alterando o tamanho de uma coluna
Você pode alterar o comprimento, a precisão ou a escala de uma coluna especificando um novo tamanho para o tipo de dados da coluna na cláusula ALTER COLUMN. Se existirem dados na coluna, o novo tamanho não poderá ser menor que o tamanho máximo dos dados. Além disso, a coluna não pode ser definida em um índice, a menos que a coluna seja um tipo de dados varchar, nvarchar ou varbinary e o índice não seja o resultado de uma restrição PRIMARY KEY. Veja o exemplo P.
Fechaduras e ALTER TABLE
As alterações especificadas em ALTER TABLE são implementadas imediatamente. Se as alterações exigirem modificações nas linhas da tabela, ALTER TABLE atualizará as linhas. ALTER TABLE adquire um bloqueio de modificação de esquema na tabela para garantir que nenhuma outra conexão faça referência aos metadados da tabela durante a alteração, exceto as operações de índice online que exigem um bloqueio SCH-M muito curto no final. Em uma operação ALTER TABLE… SWITCH, o bloqueio é adquirido nas tabelas de origem e de destino. As modificações feitas na tabela são registradas e totalmente recuperáveis. Alterações que afetam todas as linhas em tabelas muito grandes, como descartar uma coluna ou adicionar uma coluna NOT NULL com um padrão, podem levar muito tempo para serem concluídas e geradas muitos registros de log. Essas instruções ALTER TABLE devem ser executadas com o mesmo cuidado que qualquer INSERT, UPDATE,
Aumentar a largura da
nvarchar
coluna não exigirá uma queda da tabela. Nem qualquerALTER TABLE
operação. Para obter detalhes sobre restrições ao alterar as propriedades da tabela ou coluna, você pode ler a instrução ALTER TABLE .Copiei as partes mais relevantes da documentação abaixo:
fonte