一尘不染

如何在SQL Server 2008中删除带有对象依赖项的列?

sql

尝试删除列时收到的错误消息:

对象“ defEmptyString”取决于列“ fkKeywordRolleKontakt”。

讯息5074,第16级,状态1,第43行

ALTER TABLE DROP COLUMN fkKeywordRolleKontakt失败,因为一个或多个对象访问此列。

我已经尝试找到默认约束,如此处所述: 带约束的SQL Server
2005删除列

不幸的是没有成功:(返回的行是:

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 moreobjects access this column.

我可以通过右键单击列条目(dbo.tlkpRolleKontakt>列> fkKeywordRolleKontakt)(在MSSQL
Server管理器中),选择“修改”并删除该列来生成删除该列的脚本。然后,表设计器>生成更改脚本生成了必要的命令:

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

而已 :)


阅读 325

收藏
2021-03-17

共1个答案

一尘不染

我现在可以解决问题。抱歉,我没有复制完整的错误消息,它是:

消息5074,级别16,状态1,行1
对象’defEmptyString’取决于列’fkKeywordRolleKontakt’。

消息5074,级别16,状态1,行1
对象’FK_tlkpRolleKontakt_tlkpKeyword’取决于列’fkKeywordRolleKontakt’。
消息4922,级别16,状态9,第1行,ALTER TABLE DROP COLUMN
fkKeywordRolleKontakt失败,因为一个或多个对象访问此列。

我可以通过右键单击列条目(dbo.tlkpRolleKontakt>列> fkKeywordRolleKontakt)(在MSSQL
Server管理器中),选择“修改”并删除该列来生成删除该列的脚本。然后,表设计器>生成更改脚本生成了必要的命令:

ALTER TABLE dbo.tlkpRolleKontakt
    DROP CONSTRAINT FK_tlkpRolleKontakt_tlkpKeyword
EXECUTE sp_unbindefault N'dbo.tlkpRolleKontakt.fkKeywordRolleKontakt'
ALTER TABLE dbo.tlkpRolleKontakt
    DROP COLUMN fkKeywordRolleKontakt
2021-03-17