124 votes

Modification de la taille d'une colonne dans SQL Server

J'essaie de changer la taille d'une colonne dans sql server en utilisant :

ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL

où la longueur de Addr1 était initialement de 40. Il a échoué et a généré cette erreur :

The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access 
this column.

J'ai essayé de me documenter sur le sujet et il semble que parce que certaines vues font référence à cette colonne, le serveur SQL essaie en fait de supprimer la colonne qui a provoqué l'erreur.

Existe-t-il un autre moyen de modifier la taille de la colonne ?

256voto

Syed Baqar Hassan Points 1015
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)

58voto

Remus Rusanu Points 159382

Les vues sont probablement créées à l'aide de l'option WITH SCHEMABINDING, ce qui signifie qu'elles sont explicitement câblées pour empêcher de telles modifications. On dirait que le schemabinding a fonctionné et vous a empêché de casser ces vues, jour de chance, hein ? Contactez votre administrateur de base de données et demandez-lui d'effectuer la modification, après qu'il ait affirmé l'impact sur la base de données.

De MSDN :

SCHEMABINDING

Lie la vue au schéma de la ou des tables sous-jacentes. Lorsque SCHEMABINDING est spécifié, la ou les tables de base de base ne peuvent pas être modifiées d'une d'une manière qui affecterait la définition définition. La définition de la vue elle-même doit d'abord être modifiée ou abandonnée à supprimer les dépendances de la table qui doit être modifiée.

6voto

Devshish Points 1

Si quelqu'un veut "Augmenter la largeur de colonne de la table répliquée" en SQL Server 2008, alors il n'est pas nécessaire de changer la propriété de " replicate_ddl=1 ". Il suffit de suivre les étapes ci-dessous --

  1. Ouvrir SSMS
  2. Connectez-vous à la base de données Publisher
  3. exécuter la commande -- ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
  4. Cela augmentera la largeur de la colonne de varchar(x) à varchar(22) et le même changement que vous pouvez voir sur l'abonné (la transaction a été répliquée). Il n'est donc pas nécessaire de réinitialiser la réplication.

J'espère que cela aidera tous ceux qui le recherchent.

5voto

RRUZ Points 98685

Voir ce lien

Redimensionner ou modifier une colonne de table MS SQL Server avec une contrainte par défaut à l'aide de commandes T-SQL

la solution pour un tel problème de serveur SQL va être

Suppression ou désactivation de la contrainte DEFAULT sur la colonne de la table.

Modification du type de données de la colonne de la table et/ou de la taille des données.

Recréer ou réactiver la contrainte par défaut sur la colonne de la table sql.

Au revoir

2voto

voici ce qui fonctionne avec la version du programme que j'utilise : cela peut fonctionner pour vous aussi.

Je vais juste placer l'instruction et la commande qui le fait. class est le nom de la table. vous le changez dans la table elle-même avec cette méthode. pas seulement le retour sur le processus de recherche.


voir la classe de la table

select * from class

modifier la longueur des colonnes FacID (vu comme "faci") et classnumber (vu comme "classnu") pour s'adapter à l'ensemble des étiquettes.

alter table class modify facid varchar (5);

alter table class modify classnumber varchar(11);

revoir le tableau pour voir la différence

select * from class;

(exécutez à nouveau la commande pour voir la différence)


Cela change le tableau actuel pour de bon, mais pour le mieux.

P.S. J'ai fait ces instructions comme une note pour les commandes. Ce n'est pas un test, mais cela peut aider à en faire un :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X