我可以删除 SQL Server 中定义了非聚集索引的表的列吗

Sai*_*ash -1 sql-server alter non-clustered-index

我有一个记录数量巨大的表。某些列上定义了非聚集索引。

我们需要更改/删除一些定义了此类索引的列。

我直接更改/删除了列,但没有收到任何错误,例如:

Alter statement failed。它成功了。所以,我的问题是:

是否需要删除要删除/更改的列上的非聚集索引?

why it did give any errors similar to case of constraints/keys defined on them ?
Run Code Online (Sandbox Code Playgroud)

更新 :

What incase of alteting a column for its size ? Is it supposed to throw any error ?
Run Code Online (Sandbox Code Playgroud)

Kri*_*ner 6

你的问题的措辞对我来说有点奇怪,我很难完全理解你的要求……但这很容易测试你自己。

您无法删除具有索引的列,请参阅:

CREATE TABLE tempThing (id int IDENTITY(1,1) PRIMARY key, someValue varchar(50))
GO
CREATE INDEX idxTemp ON dbo.tempThing (someValue)
GO
Run Code Online (Sandbox Code Playgroud)

然后:

ALTER TABLE dbo.tempThing DROP COLUMN someValue
Run Code Online (Sandbox Code Playgroud)

给出错误:

消息 5074,级别 16,状态 1,第 1 行 索引“idxTemp”依赖于列“someValue”。消息 4922,级别 16,状态 9,第 1 行 ALTER TABLE DROP COLUMN someValue 失败,因为一个或多个对象访问此列。