Saltar al contenido

ALTER TABLE DROP COLUMN falló porque uno o más objetos acceden a esta columna

Ten en cuenta que en las ciencias un error casi siempere suele tener diversas soluciones, así que aquí te compartiremos lo más óptimo y eficiente.

Solución:

Debes quitar el constraints de la columna antes de quitar la columna. El nombre al que te refieres es un default constraint.

p.ej

alter table CompanyTransactions drop constraint [df__CompanyTr__Creat__0cdae408];
alter table CompanyTransactions drop column [Created];

La respuesta de @ SqlZim es correcta, pero solo para explicar por qué esto posiblemente sucedió. Tuve un problema similar y esto fue causado por algo muy inocente: agregar un valor predeterminado a una columna

ALTER TABLE MySchema.MyTable ADD 
  MyColumn int DEFAULT NULL;

Pero en el ámbito de MS SQL Server, un valor predeterminado en una columna es una RESTRICCIÓN. Y como toda restricción tiene un identificador. Y no puede soltar una columna si se usa en una RESTRICCIÓN.

Entonces, lo que realmente puede hacer para evitar este tipo de problemas es siempre darle a sus restricciones predeterminadas un nombre explícitopor ejemplo:

ALTER TABLE MySchema.MyTable ADD 
  MyColumn int NULL,
  CONSTRAINT DF_MyTable_MyColumn DEFAULT NULL FOR MyColumn;

Todavía tendrá que eliminar la restricción antes de eliminar la columna, pero al menos saber su nombre de antemano.

Como ya está escrito en las respuestas, debe eliminar las restricciones (creadas automáticamente por sql) relacionadas con todas las columnas que está intentando eliminar.

Realice los siguientes pasos para hacer lo necesario.

  1. Obtenga el nombre de todas las restricciones usando restricción sp_help que es una utilidad de procedimiento almacenado del sistema: ejecute lo siguiente exec sp_helpconstraint ''
  2. Una vez que obtenga el nombre de la restricción, copie ese nombre de restricción y ejecute la siguiente declaración, es decir alter table
    drop constraint
    (Será algo como esto solo o un formato similar)
  3. Una vez que elimine la restricción, puede eliminar 1 o más columnas utilizando el método convencional, es decir Alter table Drop column column1, column2 etc.

Si crees que ha resultado provechoso este post, sería de mucha ayuda si lo compartes con el resto entusiastas de la programación de este modo nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *