Modifica delle dimensioni della colonna in SQL Server


Risposte:


507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
Fai attenzione, se stai modificando una colonna in un datatable molto grande. Puoi causare un arresto anomalo (comunque nel mio ambiente).
DavidTheDev,

55
È anche importante che se la colonna è con attributo NOT NULL, deve essere menzionata nella query altrimenti la imposterà per NULLimpostazione predefinita. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri,

8
Se hai un indice su quella colonna dovrai lasciarlo cadere, quindi esegui il codice alter table e quindi crea di nuovo l'indice
Sr.PEDRO



19

L'esecuzione ALTER COLUMNsenza menzionare l'attributo NOT NULLcomporterà la modifica della colonna in nullable, se non lo è già. Pertanto, è necessario prima verificare se la colonna è nullable e, in caso contrario, specificare l'attributo NOT NULL. In alternativa, è possibile utilizzare la seguente istruzione che verifica in anticipo la nullità della colonna ed esegue il comando con l'attributo giusto.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

Selezionare la tabella -> Progettazione -> modifica il valore in Tipo di dati mostrato nella seguente Fig.

inserisci qui la descrizione dell'immagine

Salva il design delle tabelle.


controllare correttamente potrebbe essere che ti stai perdendo qualche passaggio.
Arnav,

7
Strumenti -> Opzioni ... /> Progettisti -> Progettisti di tabelle e database - deseleziona "Impedisci il salvataggio delle modifiche che richiedono la ri-creazione di tabelle"
7anner

Per la maggior parte delle cose, preferisco lo scripting. Ma per le modifiche alle colonne, mi piace l'interfaccia utente. Non è necessario ricordare di controllare NOT NULL o eventuali calcoli o proprietà aggiuntive della colonna. Basta fare clic su Salva (dopo aver apportato le modifiche alle impostazioni in SSMS come note @ 7anner).
Jacob H,

1

Un approccio interessante può essere trovato qui: Come ingrandire le colonne senza tempi di inattività di spaghettidba

Se si tenta di ingrandire questa colonna con un comando "ALTER TABLE" diretto, sarà necessario attendere che SQL Server passi attraverso tutte le righe e scrivere il nuovo tipo di dati

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Per ovviare a questo inconveniente, c'è una pillola magica per l'ingrandimento della colonna che il tuo tavolo può prendere e si chiama Row Compression. (...) Con la compressione di riga, le colonne di dimensioni fisse possono utilizzare solo lo spazio necessario per il tipo di dati più piccolo in cui si adattano i dati effettivi.

Quando la tabella viene compressa a ROWlivello, l' ALTER TABLE ALTER COLUMNoperazione di metadati è solo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.