Il problema che modifica dell'ordine delle colonne di una tabella (SQL Server 2008)
-
06-09-2019 - |
Domanda
Quando provo a cambiare questa lista colonne:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
in questo (IdLineaProducto è il primo)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio dice che non è permesso di salvare le modifiche perché la tabella deve essere eliminato e ricreato (in spagnolo ...). Potrei farlo in SQL Server 2005, ma non in SQL Server 2008.
Lo stesso accade in altre situazioni, come cercare di trasformare una colonna non-identità int all'identità. Perché accade questo? Come posso risolvere questo? Forse qualche problema mal configurato? Alcuni nuova funzionalità di SQL Server?
Soluzione
Ho trovato il soluzione a questo problema .
Questo è di progettazione e può essere rapidamente fissa in Management Studio dal deselezionando una proprietà. Per risolvere questo problema in Management Studio, andare in Strumenti -> Opzioni, quindi andare alla pagina Designer e deselezionare "salvare le modifiche Impedire che richiedono tavolo ri-creazione".
Attenzione che essa può avere conseguenze indesiderate , come la perdita di dati in altre tabelle relativi a questo.
Altri suggerimenti
Questo è solo il modo in cui funziona ... si può solo aggiungere colonne alla fine, a meno che non DROP
e CREATE
esso (normalmente la copia dei dati di andata e ritorno in, che l'IDE potrebbe aiutare con). Ma perché vuoi cambiare l'ordine? Anche se non è l'ideale, il vostro SELECT
ecc grado di gestire questo ... cioè.
SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM TheTable
...
(raramente è una buona idea quella di utilizzare solo SELECT *
)
Re del IDENTITY
; Di nuovo, questo è fondamentale per la colonna - anche se in questo caso è possibile copiare i dati fuori, DROP
la colonna, e ri-ADD
la colonna come IDENTITY
(sul lato destro), e copiarlo di nuovo in - ma poi si deve complicazioni extra con IDENTITY INSERT
e il valore SEED
(in modo da non tenta di ottenere duplicati di valori di identità esistenti).