4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column (falló ALTER TABLE ALTER COLUMN porque uno o más objetos acceden a esta columna)
SQL Server¿Qué significa?
Intentó cambiar el tipo/propiedad de una columna, pero los objetos que dependen de ella (índice, restricción, columna calculada, estadísticas, vista con schema binding, etc.) lo impidieron. La columna no puede modificarse hasta quitar las dependencias.
¿Por qué ocurre?
La columna se usa en un índice, una restricción PRIMARY KEY/UNIQUE/CHECK/DEFAULT, una expresión de columna calculada, una vista/función definida WITH SCHEMABINDING o un objeto de estadísticas. Un cambio de tipo/tamaño invalidaría esos objetos, por lo que se rechaza el ALTER.
Cómo solucionarlo
Busque primero los objetos dependientes y elimínelos o deshabilítelos temporalmente, modifique la columna y vuelva a crearlos. Consulte sys.sql_expression_dependencies y sys.indexes/sys.default_constraints para ver las dependencias. Orden típico: DROP CONSTRAINT/INDEX -> ALTER COLUMN -> CREATE de nuevo. En vistas con schema binding, quite temporalmente SCHEMABINDING y vuelva a añadirlo.
Más entradas de este motor
- 15023User already exists in the current database (el usuario ya existe en la base de datos actual)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (error de login; el login procede de un dominio no confiable y no puede usarse con autenticación de Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (la página lógica solicitada pertenece a otra allocation unit)
- 7202Could not find server 'name' in sys.servers (no se encontró el servidor en sys.servers)
- 40501The service is currently busy. Retry the request after 10 seconds (el servicio está ocupado; reintente la solicitud en 10 segundos)
- 8645A time out occurred while waiting for memory resources to execute the query (timeout esperando recursos de memoria para ejecutar la consulta)
- 8651Could not perform the operation because the requested memory grant was not available (no se pudo realizar la operación porque el memory grant solicitado no estaba disponible)