AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 5211
Accepted
Fernando
Fernando
Asked: 2011-08-31 09:26:48 +0800 CST2011-08-31 09:26:48 +0800 CST 2011-08-31 09:26:48 +0800 CST

Alterando a largura da coluna

  • 772

Aumentar a largura de uma coluna (nvarchar) necessariamente derrubará a tabela?

Em outras palavras, a largura pode ser alterada em um ambiente de produção com usuários ativos?

Achei que, se o tamanho estivesse aumentando (em vez de diminuir), isso não seria um problema.

sql-server
  • 2 2 respostas
  • 75100 Views

2 respostas

  • Voted
  1. Best Answer
    Derek Kromm
    2011-08-31T09:42:55+08:002011-08-31T09:42:55+08:00

    Se você estiver fazendo isso por meio de uma instrução T-SQL, como abaixo, nenhuma queda de tabela ocorrerá e você poderá fazê-lo com segurança em um ambiente de produção:

    alter table <table> alter column <column> nvarchar(biggernumber) [not] null
    

    Se você fizer isso por meio da GUI da tabela de design do SSMS, isso dependerá de qual script ele 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 a insere de volta na nova. Uma maneira fácil de descobrir o que ele fará é clicar no botão "Gerar Script" e observar o T-SQL que ele planeja executar.

    • 56
  2. MicSim
    2011-08-31T09:41:48+08:002011-08-31T09:41:48+08:00

    Aumentar a largura de uma nvarcharcoluna não exigirá uma queda de tabela. Nem qualquer ALTER TABLEoperação. Para obter detalhes sobre restrições ao alterar as propriedades da tabela ou da 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.

    Bloqueios 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 até mesmo aos metadados da tabela durante a alteração, exceto 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. As 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 gerar muitos registros de log. Essas instruções ALTER TABLE devem ser executadas com o mesmo cuidado que qualquer INSERT, UPDATE,

    • 18

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve