How do I drop a column with object dependencies in SQL Server 2008?

ⅰ亾dé卋堺 提交于 2019-11-30 10:53:39

Did you try first:

ALTER TABLE <tablename> DROP CONSTRAINT defEmptyString;

?

Jinna Balu

drop the constraint which is dependent on that column with

ALTER TABLE TableName DROP CONSTRAINT dependent_constraint

Then Drop Column:

ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME

dependent_constraint : this constraint is shown in the error when we try to delete dependent column.

Example: trying to drop some column IsDeleted2

Error

The object 'DF__Employees__IsDel__15502E78' is dependent on column 'IsDeleted2'.

ALTER TABLE DROP COLUMN IsDeleted2 failed because one or more objects access this column.

Error clearly states that we need to delete DF__Employees__IsDel__15502E78 constraint

ALTER TABLE Employess 
DROP CONSTRAINT DF__Employees__IsDel__15502E78;

Drop Column: ALTER TABLE Employess DROP COLUMN IsDelted2

Simon A. Eugster

I could solve the problem now. I'm sorry, I did not copy the full error message, which was:

Msg 5074, Level 16, State 1, Line 1
The object 'defEmptyString' is dependent on column 'fkKeywordRolleKontakt'.

Msg 5074, Level 16, State 1, Line 1
The object 'FK_tlkpRolleKontakt_tlkpKeyword' is dependent on column 'fkKeywordRolleKontakt'.
Msg 4922, Level 16, State 9, Line 1 ALTER TABLE DROP COLUMN fkKeywordRolleKontakt failed because one or more objects access this column.

I could generate a script to drop the column by right-clicking on the column entry (dbo.tlkpRolleKontakt > Columns > fkKeywordRolleKontakt) (in MSSQL Server Manager), selecting Modify and deleting the column. Then Table Designer > Generate Change Script generated the necessary commands:

ALTER TABLE dbo.tlkpRolleKontakt
    DROP CONSTRAINT FK_tlkpRolleKontakt_tlkpKeyword
EXECUTE sp_unbindefault N'dbo.tlkpRolleKontakt.fkKeywordRolleKontakt'
ALTER TABLE dbo.tlkpRolleKontakt
    DROP COLUMN fkKeywordRolleKontakt

use this script to cancel the checking of constraint :

ALTER TABLE  @tablename  NOCHECK CONSTRAINT  @constraintname 

I ran into a simpler solution.

  1. DELETE the data of that column.
  2. Once the column has no value inside it do -

ALTER TABLE <table_name> DROP COLUMN <column_name>

This way the column is easily dropped.

P.S - This is a headache if you have like extreme amounts of data in the column.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!