Eu tenho uma coluna (chamada RequestDate
) que preciso mudar de NULL
para NOT NULL
, mas há um índice clusterizado nessa coluna, então primeiro preciso descartar esse índice.
Originalmente, o índice foi criado usando:
CREATE CLUSTERED INDEX IX_RequestDate
ON [MyDB].[dbo].[MyTable] (RequestDate);
Para soltá-lo, executei:
Drop Index IX_RequestDate On [MyDB].[dbo].[MyTable]
E então tentei alterar a nulidade da coluna usando:
ALTER TABLE [MyDB].[dbo].[MyTable] ALTER COLUMN [RequestDate] DATETIME NOT NULL
Mas deu um erro:
O objeto 'MyTable' é dependente da coluna 'RequestDate'.
Em seguida, listei MyTable
os índices usando esta consulta e o índice ainda está lá, embora agora não tenha um nome e seu tipo seja HEAP
(originalmente CLUSTERED
):
TableName IndexName IndexType ColumnOrdinal ColumnName ColumnType
MyTable NULL HEAP 0 RequestDate datetime
Eu tenho 2 perguntas:
- Por que o índice descartado ainda está lá?
- Eu recebi o erro de dependência acima por causa desse índice ainda existente?
Se sim, como posso removê-lo?
Se não, há algo mais que devo verificar? Eu gostaria de evitar derrubar a mesa.
Observe que não há restrições nesta tabela.
Estou usando o SQL Server 2014, SO Windows Server 2012 R2, e o seguinte é a saída de SCRIPT TABLE AS -> CREATE TO
(alterei alguns dos nomes das colunas):
CREATE TABLE [dbo].[MyTable](
[RequestDate] [datetime] NULL,
[UserName] [nvarchar](50) NULL,
[HostName] [nvarchar](20) NULL,
[RequestContent] [ntext] NULL,
[ResponseContent] [ntext] NULL,
[RequestStatus] [int] NULL,
[ErrorMessage] [ntext] NULL,
[Duration] [float] NULL,
[ServiceName] [nvarchar](100) NULL,
[Direction] [int] NULL,
[RequestId] [uniqueidentifier] NOT NULL,
[IsRetry] [bit] NULL,
[CallerId] [nvarchar](100) NULL
)
Na verdade, esse índice não está mais lá, a coluna é a que ainda está lá e o que antes era um Índice Agrupado agora é um Heap .
Não, porque o índice não existe mais.
Você pode visualizar as dependências de uma tabela conforme sugerido por Erik Darling .
Como você mencionou em seus comentários, você encontrou uma VIEW usando este método e, se verificar o documento CREATE VIEW , verá a opção SCHEMABINDING pode causar o erro que você mencionou: