Eu tenho uma tabela que contém mais de 10.000 linhas, e quero mudar uma coluna de um tipo de dados numéricos para um tipo de dados flutuantes. Como posso realizar a alteração com o menor impacto na disponibilidade dos dados?
Tem três opções para alterar o tipo de dados da coluna. Uma, pode usar uma declaração SELECT tal como
SELECT a,b,c,CAST(d AS float) AS N'd',e,f,g INTO dbo.newtable
P>Pode então usar sp_rename para renomear a tabela antiga, renomear nova tabela como a tabela antiga, e reiniciar as suas permissões e índices. Uma segunda opção é usar o comando ALTER TABLE para alterar o tipo de dados da coluna, usando a seguinte sintaxe para ALTER TABLE:
ALTER TABLE <table>\{ \ ) \]
Or, como terceira opção, pode usar o programa de cópia em massa (bcp) para copiar os dados, depois largar a tabela, criar a nova tabela, usar bcp para copiar os dados para a nova tabela, e reiniciar as permissões e índices.
Tipicamente, recomendaria a utilização da opção TABELA ALTER, especialmente se tiver apenas alguns milhares de linhas de dados, porque esta solução não afecta as permissões. Contudo, a utilização do comando ALTER TABLE tem impacto na disponibilidade dos dados, pelo que provavelmente não os quer utilizar durante as horas regulares de trabalho ou se tiver milhões de linhas na sua tabela.
Para saber mais, visite “Cool New SQL Server 2012 Metadata” e “Report Builder and Tabular Model Databases”
-Patrick Conlan
Platform Program Manager,
Microsoft Project Team