web-dev-qa-db-fra.com

Varchar (255) à Varchar (MAX)

Est-il possible de changer un type de colonne dans une base de données SQL Server 2008 de varchar(255) à varchar(MAX) sans avoir à supprimer la table et à recréer?

SQL Server Management Studio me lance une erreur chaque fois que j'essaye de le faire en utilisant cela - mais pour me sauver un mal de tête serait bien de savoir si je peux changer le type sans avoir à DROP et CREATE.

Merci

45
Darbio

Vous devriez pouvoir le faire en utilisant TSQL.

Quelque chose comme

ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
76
Adriaan Stander

"L'enregistrement des modifications n'est pas autorisé. Les modifications que vous avez apportées nécessitent la suppression et la recréation des tableaux suivants. Vous avez soit modifié une table qui ne peut pas être recréée, soit activé l'option Empêcher l'enregistrement des modifications nécessitant une recréation de la table. ' L'option "Empêcher l'enregistrement des modifications" n'est pas activée.

Il s'agit d'une nouvelle "fonctionnalité" dans SQL Server Management Studio 2008 qui est activée par défaut. Chaque fois que vous apportez une modification plus importante, SSMS ne peut recréer la table qu'en en créant une nouvelle, puis en déplaçant les données de l'ancienne - le tout en arrière-plan (ces modifications incluent le réordonnancement de vos colonnes, entre autres).

Cette option est désactivée par défaut, car si votre table a des contraintes et des trucs FK, cette façon de refaire la table peut échouer. Mais vous pouvez certainement activer cette fonctionnalité!

alt text

C'est sous Tools > Options et une fois que vous décochez cette option, vous pouvez à nouveau effectuer ce type de modifications dans la structure de la table dans le concepteur de table.

13
marc_s