Soyez conscient
avec quelque chose comme
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
Martin de Answare Smith:
Si vous augmentez à varchar(100 - 8000)
(c.-à quoi que ce soit autre que varchar(max))
et vous faites cela via TSQL plutôt que l'interface graphique SSMS
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
et ne pas modifier la nullité de la colonne de
NULL
à
NOT NULL
(ce qui verrouillerait la table alors que toutes les lignes sont validées et potentiellement écrites vers ou depuis
NOT NULL
vers
NULL
dans certaines circonstances, il s'agit alors d'un changement rapide de métadonnées uniquement. Il faudra peut-être attendre un verrou
SCH-M
sur la table mais une fois qu'il acquiert que le changement sera à peu près instantané. Un inconvénient à prendre en compte est que pendant l'attente d'un verrou
SCH-M
, d'autres requêtes seront bloquées plutôt que de sauter la file d'attente avant cela, vous pouvez donc envisager d'ajouter un
SET LOCK_TIMEOUT
en premier. Assurez-vous également dans l'instruction
ALTER TABLE
que vous spécifiez explicitement
NOT NULL
s'il s'agit de l'état de la colonne d'origine, sinon la colonne sera modifiée pour autoriser
NULL
.
Étrange, essayé dans SQL Server 2005, fonctionne très bien pour moi. – anonymous
BTW, quelle a été l'erreur lancée? – anonymous
'L'enregistrement des modifications n'est pas autorisé. Les modifications que vous avez apportées nécessitent la suppression et la recréation des tables suivantes. Vous avez soit apporté des modifications à une table qui ne peut pas être recréée, soit activé l'option Empêcher l'enregistrement des modifications nécessitant une table à recréer. L'option 'Empêcher les modifications d'enregistrement' n'est pas activée ... – Darbio