4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column (échec d'ALTER TABLE ALTER COLUMN : un ou plusieurs objets accèdent à cette colonne)
SQL ServerQue signifie cette erreur ?
Vous avez tenté de modifier le type/une propriété d'une colonne, mais des objets dépendant de cette colonne (index, contrainte, colonne calculée, statistiques, vue schema-bound, etc.) l'en ont empêché. La colonne ne peut pas être modifiée tant que les dépendances ne sont pas retirées.
Cause
La colonne est utilisée dans un index, une contrainte PRIMARY KEY/UNIQUE/CHECK/DEFAULT, une expression de colonne calculée, une vue/fonction définie WITH SCHEMABINDING, ou un objet de statistiques. Un changement de type/de taille invaliderait ces objets, l'ALTER est donc refusé.
Comment la corriger
Trouvez d'abord les objets dépendants et supprimez-les ou désactivez-les temporairement, modifiez la colonne, puis recréez-les. Interrogez sys.sql_expression_dependencies et sys.indexes/sys.default_constraints pour voir les dépendances. Ordre typique : DROP CONSTRAINT/INDEX -> ALTER COLUMN -> CREATE de nouveau. Pour les vues schema-bound, retirez temporairement SCHEMABINDING puis rajoutez-le.
Autres entrées pour ce moteur
- 15023User already exists in the current database (l'utilisateur existe déjà dans la base courante)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (échec de connexion : login provenant d'un domaine non approuvé, inutilisable avec l'authentification Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (la page logique lue appartient à une autre unité d'allocation)
- 7202Could not find server 'name' in sys.servers (serveur 'name' introuvable dans sys.servers)
- 40501The service is currently busy. Retry the request after 10 seconds (le service est actuellement occupé ; réessayez dans 10 secondes)
- 8645A time out occurred while waiting for memory resources to execute the query (timeout en attendant les ressources mémoire nécessaires à l'exécution de la requête)
- 8651Could not perform the operation because the requested memory grant was not available (opération impossible : l'octroi de mémoire demandé n'était pas disponible)