Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema Sql server

  1. #1

    Problema Sql server

    Buongirono a tutti,
    0
    Vengo subito al problema.
    Vorrei sapere come è possibile cambiare il datatype di una colonna da ntext a varchar(4000) tramite una query.
    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    alter table nome_tabella alter column nome_colonna tipo_da_aggiornare

  3. #3
    avevo già provato con questo metodo, ma non funziona in quanto mi dice che non posso modificare perchè la colonna è di tipo ntext

  4. #4
    C'è qualcuno che conosce una soluzione???

  5. #5
    ho cercato un pò in giro e l'unica soluzione possibile è aggiungere una nuova colonna, lanciarci un UPDATE che imposti il valore leggendo il contenuto della vecchia colonna ntext e poi droppare la colonna ntext

    il problema potrebberò essere eventuali vincoli/referenziazioni che sono da passare

    dopo che droppi la vecchia colonna rinomini la nuova con il nome della vecchia

  6. #6
    Grazie per questa prima soluzione.
    Solo una cosa.
    Per spostare i valori dalla colonna di tipo ntext a quella varchar dovrei fare comunque un ciclo. Giusto?
    In caso affermativo, ci sarebbero problemi a scrivere valori ntext in varchar(4000)???
    Spero mi sono spiegato bene...

  7. #7
    Ho provato con la procedura da te consigliatomi e funziona...
    Di seguito riporto un'esempio in modo che potrà essere utili a qaulcun altro..

    --Rinominare la colonna ntext
    EXEC sp_rename 'Tabella.Colonna', 'Nuovo nome della colonna', 'COLUMN'
    --Aggiungere nuova colonna
    ALTER TABLE Tabella ADD Colonna varchar(xxxx) ' Numero caratteri
    --Inserimento valori dalla colonna rinominata ntext in quella appena creata
    UPDATE Tabella set ColonnaCreata = SUBSTRING(ColonnaRinominata,1,xxxx)
    --Eliminazione Colonna Rinominata
    ALTER TABLE Tabella DROP COLUMN Colonna Rinominata


    Inoltre, ho notatto che se si eseguono tutti i passi in contemporanea genere un errore al terzo passo. Questo perchè la colonna ancora deve essere rinominata.
    Per ovviare bisogna inserire un ciclo do all'interno della tabella Information.Schema.Columns affinchè non trova la colonna rinominata...
    Spero di essere stato chiaro...

    Saluti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.