Modification de la taille des colonnes dans SQL Server


Réponses:


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

6
Soyez prudent, si vous modifiez une colonne dans une très grande table de données. Vous pouvez provoquer un plantage (dans mon environnement de toute façon).
DavidTheDev

55
Il est également important que si la colonne est avec attribut, NOT NULLelle doit être mentionnée dans la requête, sinon elle la définira NULLpar défaut. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri

8
Si vous avez un index sur cette colonne, vous devrez le supprimer, puis exécuter le code alter table et puis créer à nouveau l'index
Sr.PEDRO



19

L'exécution ALTER COLUMNsans mentionner d'attribut NOT NULLentraînera la modification de la colonne en nullable, si ce n'est déjà fait. Par conséquent, vous devez d'abord vérifier si la colonne est nullable et sinon, spécifier l'attribut NOT NULL. Vous pouvez également utiliser l'instruction suivante qui vérifie au préalable la valeur Null de la colonne et exécute la commande avec l'attribut approprié.

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

Sélectionnez le tableau -> Conception -> modifiez la valeur dans le type de données comme illustré dans la figure suivante.

entrez la description de l'image ici

Enregistrez la conception des tables.


vérifiez correctement que vous manquez une étape.
arnav

7
Outils -> Options ... /> Concepteurs -> Concepteurs de tables et de bases de données - décochez "Empêcher l'enregistrement des modifications qui nécessitent une recréation de table"
7anner

Pour la plupart des choses, je préfère les scripts. Mais pour les changements de colonne, j'aime l'interface utilisateur. N'oubliez pas de vérifier NOT NULL ou tout calcul ou toute propriété de colonne supplémentaire. Cliquez simplement sur Enregistrer (après avoir modifié les paramètres dans SSMS en tant que notes @ 7anner).
Jacob H

1

Une approche intéressante peut être trouvée ici: Comment agrandir vos colonnes sans temps d'arrêt par spaghettidba

Si vous essayez d'agrandir cette colonne avec une simple commande «ALTER TABLE», vous devrez attendre que SQLServer passe par toutes les lignes et écrive le nouveau type de données

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Pour surmonter cet inconvénient, il existe une pilule d'agrandissement de colonne magique que votre table peut prendre, et elle s'appelle Row Compression. (...) Avec la compression de lignes, vos colonnes de taille fixe peuvent utiliser uniquement l'espace requis par le plus petit type de données où les données réelles tiennent.

Lorsque la table est compressée au ROWniveau, alors l' ALTER TABLE ALTER COLUMNopération de métadonnées est uniquement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.