无法[U_Family]从下表中删除列:
[U_Family]
表CREATE脚本:
CREATE TABLE [dbo].[Users]( [U_Id] [int] IDENTITY(101,1) NOT NULL, [U_Name] [nvarchar](50) NULL, [U_Family] [nvarchar](50) NULL, CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [U_Id] ASC ), CONSTRAINT [IX_UserIdUnique] UNIQUE NONCLUSTERED ( [U_UserId] ASC ) ) ON [PRIMARY] GO CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)] ON [dbo].[Users] ( [U_Id] ASC ) INCLUDE ( [U_Name], [U_Family]) ) ON [PRIMARY] GO
错误信息 :
“用户”表-无法修改表。索引“ IX_Users(UserId)”取决于列“ U_Family”。ALTER TABLE DROP COLUMN U_Family失败,因为一个或多个对象访问此列。
我知道问题是因为这个索引:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)] ON [dbo].[Users] ( [U_Id] ASC ) INCLUDE ( [U_Name], [U_Family])) ON [PRIMARY] GO
但我从未找到编辑此索引并[U_Family]从包含的列中删除的语法。
我无法删除该索引,因为它被外键约束所使用,因此我不应该删除它。
任何解决方案???
提前致谢。
在SQL Server 2008中,您应该能够“重新创建”索引,并在单个命令中删除现有的索引-尝试以下操作:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)] ON [dbo].[Users]([U_Id] ASC) WITH DROP_EXISTING
本WITH DROP_EXISTING应与包括删除列“老”指数。运行该命令后,您应该可以从表中删除列。
WITH DROP_EXISTING