[英]How do I drop a column with object dependencies in SQL Server 2008?
我在尝试删除列时获得的错误消息:
对象'defEmptyString'依赖于列'fkKeywordRolleKontakt'。
Msg 5074,Level 16,State 1,Line 43
ALTER TABLE DROP COLUMN fkKeywordRolleKontakt失败,因为一个或多个对象访问此列。
我已经尝试找到默认约束,如下所述: 带有约束的SQL Server 2005 drop column
不幸的是没有任何成功:(返回的行是:
fkKeywordRolleKontakt 2 814625945 0 defEmptyString
我无法删除fkKeywordRolleKontakt
和defEmptyString
。
摆脱这种依赖的正确方法是什么?
编辑:也许这也很重要。 列fkKeywordRolleKontakt的类型为udKeyword(nvarchar(50)),默认为dbo.defEmptyString
。
编辑2:解决了
我现在可以解决问题了。 对不起,我没有复制完整的错误消息,这是:
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.
我可以通过右键单击列条目(dbo.tlkpRolleKontakt> Columns> fkKeywordRolleKontakt)(在MSSQL服务器管理器中),选择修改并删除列来生成一个删除列的脚本。 然后,表设计器>生成更改脚本生成必要的命令:
ALTER TABLE dbo.tlkpRolleKontakt
DROP CONSTRAINT FK_tlkpRolleKontakt_tlkpKeyword
EXECUTE sp_unbindefault N'dbo.tlkpRolleKontakt.fkKeywordRolleKontakt'
ALTER TABLE dbo.tlkpRolleKontakt
DROP COLUMN fkKeywordRolleKontakt
而已 :)
你先试试了吗:
ALTER TABLE <tablename> DROP CONSTRAINT defEmptyString;
?
删除依赖于该列的约束
ALTER TABLE TableName DROP CONSTRAINT dependent_constraint
然后Drop Column:
ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME
dependent_constraint :当我们尝试删除依赖列时,此约束会显示在错误中。
示例:尝试删除一些列IsDeleted2
错误
对象'DF__Employees__IsDel__15502E78'依赖于列'IsDeleted2'。
ALTER TABLE DROP COLUMN IsDeleted2失败,因为一个或多个对象访问此列。
错误清楚地表明我们需要删除DF__Employees__IsDel__15502E78
约束
ALTER TABLE Employess
DROP CONSTRAINT DF__Employees__IsDel__15502E78;
删除列: ALTER TABLE Employess DROP COLUMN IsDelted2
我现在可以解决问题了。 对不起,我没有复制完整的错误消息,这是:
Msg 5074,Level 16,State 1,Line 1
对象'defEmptyString'依赖于列'fkKeywordRolleKontakt'。
Msg 5074,Level 16,State 1,Line 1
对象'FK_tlkpRolleKontakt_tlkpKeyword'依赖于列'fkKeywordRolleKontakt'。
消息4922,级别16,状态9,行1 ALTER TABLE DROP COLUMN fkKeywordRolleKontakt失败,因为一个或多个对象访问此列。
我可以通过右键单击列条目(dbo.tlkpRolleKontakt> Columns> fkKeywordRolleKontakt)(在MSSQL服务器管理器中),选择修改并删除列来生成一个删除列的脚本。 然后,表设计器>生成更改脚本生成必要的命令:
ALTER TABLE dbo.tlkpRolleKontakt
DROP CONSTRAINT FK_tlkpRolleKontakt_tlkpKeyword
EXECUTE sp_unbindefault N'dbo.tlkpRolleKontakt.fkKeywordRolleKontakt'
ALTER TABLE dbo.tlkpRolleKontakt
DROP COLUMN fkKeywordRolleKontakt
使用此脚本取消约束检查:
ALTER TABLE @tablename NOCHECK CONSTRAINT @constraintname
我遇到了一个更简单的解决方案。
ALTER TABLE <table_name> DROP COLUMN <column_name>
这样,该列很容易掉落。
PS - 如果您在列中有大量数据,这是一个令人头疼的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.