Ho una tabella che contiene più di 10.000 righe e voglio cambiare una colonna da un tipo di dati numerici a un tipo di dati float. Come posso realizzare il cambiamento con il minimo impatto sulla disponibilità dei dati?
Hai tre opzioni per cambiare il tipo di dati della colonna. Una, puoi usare un’istruzione SELECT come
SELECT a,b,c,CAST(d AS float) AS N'd',e,f,g INTO dbo.newtable
Puoi poi usare sp_rename per rinominare la vecchia tabella, rinominare newtable come la vecchia tabella e resettare i tuoi permessi e indici. Una seconda opzione è quella di usare il comando ALTER TABLE per cambiare il tipo di dati della colonna, usando la seguente sintassi per ALTER TABLE:
ALTER TABLE <table>\{ \ ) \]
O, come terza opzione, si può usare il programma bulk copy (bcp) per copiare i dati, poi abbandonare la tabella, creare la nuova tabella, usare bcp per copiare i dati nella nuova tabella e resettare permessi e indici.
Tipo, raccomanderei di usare l’opzione ALTER TABLE, specialmente se avete solo poche migliaia di righe di dati, perché questa soluzione non influenza i permessi. Tuttavia, l’uso del comando ALTER TABLE ha un impatto sulla disponibilità dei dati, quindi probabilmente non vorrete usarlo durante il normale orario di lavoro o se avete milioni di righe nella vostra tabella.
Per saperne di più, visitate “Cool New SQL Server 2012 Metadata” e “Report Builder and Tabular Model Databases.”
-Patrick Conlan
Platform Program Manager,
Microsoft Project Team