Questo è solo un problema facile. È lo stesso problema di cambiare una tabella nella finestra di progettazione. Penso che tu abbia modificato una colonna all'interno del tuo progetto di tabella che ha bisogno di rilasciare e ricreare la tabella per lasciare l'ordine della colonna nella stessa posizione.
Ecco un breve esempio. Prendi questo disegno del tavolo come indicato:
CREATE TABLE dbo.Test(
id int identity(1,1),
firstname nvarchar(100),
name nvarchar(100),
street nvarchar(100)
)
Questo creerà le colonne in un ordine specificato. Si può vedere questo ordine qui:
SELECT name, column_id
FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.Test')
vedrete qualcosa di simile:
column_name column_id
id 1
firstname 2
name 3
street 4
Se si modifica la colonna name
tramite progettista o nel tuo caso nel progetto di dati, questo farà sì che SQL Server per ottenere questo ordine in posizione verticale. In questo caso si prova a cambiare la colonna name
in lastname
. Ciò imporrà SQL Management Studio e altri programmi simili per mantenere lo column_id
in posizione verticale. Questo può essere fatto solo se il tavolo è completamente ricreato con il giusto ordine di colonna. SQL Server crea uno stub di tabella temporaneo, inserisce tutto in esso, rilascia la tabella precedente e rinomina la tabella temporanea con il nome originale precedente. Proprio come nel tuo codice qui sopra.
Dopo che vedrete qualcosa di simile:
column_name column_id
id 1
firstname 2
lastname 3
street 4
Se si desidera semplicemente rinominare l'ultima colonna o farlo manualmente, tutto sarebbe andato bene. Manualmente sarebbe molto più efficiente, in quanto non è necessario spostare TUTTI i dati in una nuova tabella. Il modo manuale sarebbe questo:
-- Create the new column
ALTER TABLE dbo.Test ADD lastname nvarchar(100)
GO
-- Populate the new column using the old one
UPDATE dbo.Test
SET lastname = name
GO
-- Drop the old column afterwards
ALTER TABLE dbo.Test DROP COLUMN name
Questo comportamento comporterà il seguente risultato:
column_name column_id
id 1
firstname 2
street 4
lastname 5
L'ultimo sarà molto più efficiente, come già detto.
Speriamo che questo risponda alla tua domanda, anche se la risposta arriva di recente.
Non è possibile modificare una definizione di colonna se fa parte di una chiave/indice. Eliminare le chiavi, cambiare la definizione e quindi ricostruire le chiavi sarà, in generale, più costoso della semplice costruzione della struttura parallela con la nuova definizione, quindi abbandonare la vecchia e rinominare. –