2017-10-19 16 views
0

J'ai une table de production qui a 100 millions de lignes, et dans un but de reporting, nous devons ajouter une colonne supplémentaire qui sera un numérique (18,0). Ne me laisse pas ajouter cette colonne sans laisser tomber la table. Toute autre façon que je peux faire cela sans affecter les données?Impossible d'ajouter une colonne avec une table de sortie dans le serveur SQL

+0

Il devrait être bon pour l'ajouter si vous le faites via 'modifier table'. Si vous utilisez le concepteur, et surtout si vous essayez de le «positionner» ailleurs que dans la dernière colonne *, le concepteur peut choisir de laisser tomber/créer. –

Répondre

0

Vous pouvez ajouter une colonne sans supprimer la table.

ALTER TABLE YourTable 
ADD SomeColumnName NUMERIC(18,0) 

MISE À JOUR

Si vous souhaitez que la colonne NOT NULL alors vous devrez faire accepter NULL d'abord, puis définissez les valeurs par une mise à jour, et enfin modifier la colonne à NOT NULL.

Ou définir une valeur par défaut, comme

ALTER TABLE YourTable 
ADD SomeColumnName DECIMAL(18,0) NOT NULL DEFAULT 1 
+0

C'est tout? si cela ne veut pas laisser tomber ma table et ajoute seulement la nouvelle colonne, je serais heureux. Je vais essayer! Merci – SQLHunter

+0

j'ai essayé, mais le résultat est le même .... quand je cours une telle déclaration ALTER TABLE YourTable AJOUTER SomeColumnName NUMERIC (18,0) il a jeté une erreur Msg 4901, niveau 16, état 1, ligne 1 ALTER TABLE permet uniquement d'ajouter des colonnes pouvant contenir des valeurs NULL ou d'avoir une définition DEFAULT spécifiée, ou la colonne ajoutée est une colonne d'identité ou d'horodatage, ou si aucune des conditions précédentes n'est remplie, la table doit être vide pour permettre ajout de cette colonne .... – SQLHunter

+0

ALTER TABLE [dbo]. [obligations_monthend_snapshots] AJOUTER [417_number] Numérique (18,0) NOT NULL – SQLHunter