Czym jest ta odwrócona srebrna ikona klucza

11

Odziedziczyłem serwer i bazę danych innej firmy SQL Server 2005, aby móc generować raporty i pulpity nawigacyjne.

Na jednym stole znalazłem nową ikonę: niebiesko-srebrny klucz do góry nogami, obok moich innych kluczy podstawowych i obcych.

Po kliknięciu go prawym przyciskiem myszy menu kontekstowe daje mi opcję „Ograniczenie skryptu jako”, ale gdy próbuję go „zmodyfikować”, otwiera formularz projektu kolumny (jak klucze podstawowe), a jednak pojawia się w Sekcja „Indeksy”, a nie ograniczenia.

Ktoś wie, jak się nazywa i do czego służy?

Klucz do góry nogami

Philippe
źródło

Odpowiedzi:

12

To oznacza wyjątkowe ograniczenie. W SQL Server unikalne ograniczenie jest faktycznie realizowane jako indeks pod przykryciem; dlatego pojawia się również pod Indexeswęzłem (nie mogę dobrze wyjaśnić, dlaczego nie ma go przynajmniej pod tym Constraintswęzłem, ani dlaczego wybrali klucz do góry nogami zamiast po prostu innego koloru).

Powinieneś zobaczyć wynik, aby sprawdzić, czy jest on faktycznie zaimplementowany jako indeks:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

Powiedziałeś, że widziałeś „Ograniczenie skryptu jako ...” - jeśli to zrobisz, dostarczyłby ci skrypt podobny do:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

Ale nie uruchamiaj go, ponieważ ta składnia nie używa nazwy, a jedynie stworzy drugie, nadmiarowe, unikalne ograniczenie ...

Oto bardzo proste repro i dowód, że dostaję klucz do góry nogami nawet przy bardzo podstawowej składni w 2014 roku:

CREATE TABLE dbo.foo(id INT UNIQUE);

wprowadź opis zdjęcia tutaj Kliknij, aby powiększyć

Teraz możesz uzyskać inną ikonę, jeśli utworzysz wyraźnie unikalny indeks (a jedynymi różnicami, które zobaczysz, sys.indexessą nazwa i wartość is_unique_constraint):

wprowadź opis zdjęcia tutaj Kliknij, aby powiększyć

W przypadku innych różnic zobacz odpowiedź Przepełnienie stosu .

Aaron Bertrand
źródło
1
Czy jest specyficzny dla SQL2005? Ponieważ kiedy próbuję dodać indeks UNIQUE, dostaję inną ikonę (pewnego rodzaju odwrócone drzewo). A kiedy dodam Ograniczenie, dostaję ikonę tabeli z nawiasami kwadratowymi. Nie mogę odtworzyć tej ikony.
Philippe,
@Philippe Zaktualizowana odpowiedź.
Aaron Bertrand
Dzięki. To było szczegółowe wyjaśnienie i szybkie! :-)
Philippe