E 'possibile avere un nvarchar (max) e un varbinary (max) in campi stessa tabella
-
30-09-2019 - |
Domanda
Sto usando SQL Server 2008 R2.
Ho una tabella che ha diversi campi, tra cui un campo nvarchar (max).
Quando provo e aggiungere un nuovo campo di tipo varbinary (max) ottengo un messaggio di errore: "salvare le modifiche Non è consentito il cambiamento che avete fatto richiede i seguenti tabelle da droped e ricreato".
E 'possibile avere un nvarchar (max) e un varbinar campi (max) nella stessa tabella?
E 'l'unico modo per risolvere questo problema, per creare una nuova tabella con la nuova struttura e il trasferimento dei dati?
Soluzione
Sì, è possibile.
Se state vedendo questo messaggio è necessario avere cercato di inserire la nuova colonna in mezzo a quelle esistenti nella tabella progettista SSMS. Aggiungilo sull'estremità delle colonne esistenti, allora la tabella non dovrà essere completamente ricostruito.
O semplicemente eseguire
alter table YourTable add newcol varbinary(max) null
Altri suggerimenti
Sì, certo - probabilmente basta avere questa nuova opzione "sicurezza" in SSMS ancora abilitato (è attivata per impostazione predefinita):
che è sotto Tools > Options
....
Vai a Tools | Options > Designers
e deselezionare l'opzione 'Impedire il salvataggio delle modifiche che richiedono tavolo ri-creazione'
SQL Server non consente di evolvere il tavolo in questo modo, perché non può modificare l'archiviazione per la tabella esistente in modo dinamico. Se si vuole fare questo, è necessario creare una nuova tabella con il nuovo schema e compilarlo con i dati della tabella originale.