Kann nicht den EINZIGARTIGEN Index aus der Tabelle löschen

Wenn ich diese Abfrage ausführe

ALTER TABLE "dbo"."ROOM" DROP INDEX "UNIQUE"; 

Ich habe diese Nachricht:

Fehler 1018: Falsche Syntax in der Nähe von 'INDEX'. Wenn dies als Teil eines Tabellenhinweises gedacht ist, sind jetzt ein Schlüsselwort und eine Klammer erforderlich. Siehe SQL server Books Online für die richtige Syntax.

Der Name des eindeutigen Index ist genau, UNIQUE . Ich denke, das ist das Problem, und es ist ein autogenerated Name (für den SQL server-Client, der verwendet wurde, um diesen Index zu erstellen). Dies ist der create table Satz:

 CREATE TABLE "ROOM" ( "ID" BIGINT NOT NULL DEFAULT NULL, //the rest of the columns... "ROOM" VARCHAR(100), UNIQUE INDEX "UNIQUE" ("ROOM") ) ; 

Wie kann ich diesen Index entfernen? Ich weiß, ich kann den Tisch fallen lassen und es wieder schaffen, das will ich vermeiden.

Sie müssen diese Aussage verwenden:

 DROP INDEX [UNIQUE] ON dbo.Room 

Sie müssen den Index löschen und auch festlegen, welche Tabelle es auf … erstellt wurde und da sein Name ein reserviertes SQL-Schlüsselwort ist, müssen Sie das in eckige Klammern setzen ( [UNIQUE] ).

Weitere Informationen finden Sie in der offiziellen MSDN-Dokumentation zu DROP INDEX

Update: Wenn diese statement nicht funktioniert, dann wird dieser Index nicht immer UNIQUE .

Überprüfen Sie, welche Indizes in dieser Tabelle mit dieser statement definiert sind:

 SELECT * FROM sys.indexes WHERE object_id=OBJECT_ID('dbo.Room') 

und schau auf die Spalte Name – dann benutze den entsprechenden , aktuellen Indexnamen, um diesen Index zu löschen.

Update # 2: OK, so dass Sie wirklich eine eindeutige Einschränkung haben, die durch diesen eindeutigen Index erzwungen wird. Also, um das loszuwerden, müssen Sie zuerst herausfinden, was diese Einschränkung genannt wird und welche Tabelle es ist:

 SELECT name, TableName = OBJECT_NAME(parent_object_id) FROM sys.key_constraints WHERE type = 'UQ' 

Sobald Sie diese beiden Informationen haben, können Sie diese Einschränkung jetzt fallen lassen:

 ALTER TABLE (TableName) DROP CONSTRAINT (ConstraintName) 

und dann wird dein einzigartiger Index auch weg sein.