Volevo aggiungere la mia esperienza con la conversione. Avevo molti text
campi nell'antico codice Linq2SQL. Questo per consentire la ricostruzione ONLINE delletext
colonne presenti negli indici .
In primo luogo ho conosciuto i vantaggi per anni, ma ho sempre pensato che la conversione avrebbe comportato alcune lunghe e spaventose query in cui SQL Server avrebbe dovuto ricostruire la tabella e copiare tutto, abbattendo i miei siti Web e aumentando il mio battito cardiaco.
Ero anche preoccupato che Linq2SQL potesse causare errori se stesse facendo una sorta di verifica del tipo di colonna.
Felice di segnalare, tuttavia, che i comandi ALTER sono tornati ISTANTANEAMENTE, quindi stanno sicuramente cambiando solo i metadati della tabella. Potrebbe esserci del lavoro offline in corso per riportare i dati <8000 caratteri nella tabella, ma il comando ALTER è stato istantaneo.
Ho eseguito quanto segue per trovare tutte le colonne che necessitano di conversione:
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] VARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'TEXT' order by table_name, column_name
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] NVARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'NTEXT' order by table_name, column_name
Questo mi ha dato un bel elenco di query, che ho appena selezionato e copiato in una nuova finestra. Come ho detto, correre questo è stato istantaneo.
Linq2SQL è piuttosto antico: utilizza un designer su cui trascinare le tabelle. La situazione potrebbe essere prima più complessa per il codice EF, ma non l'ho ancora affrontato.