Za pomocą uniqueidentifier danych

uniqueidentifier Typ danych przechowuje 16-bajtowy wartości binarnych, które działają jako unikatowych identyfikatorów globalnych (GUID).Identyfikator GUID jest unikatowy numer binarne żaden komputer w świecie wygeneruje zduplikowana wartość identyfikatora GUID.Głównym zastosowaniem identyfikatora GUID jest przypisywanie identyfikatora musi być unikatowa w sieci, która ma wiele komputerów w wielu witrynach.

Wartość identyfikatora GUID dla uniqueidentifier kolumna uzyskuje się zwykle przez jeden z następujących sposobów:

  • W Transact-SQL instrukcja, partia lub skryptu przez wywołanie funkcja NEWID.

  • W kodzie aplikacji poprzez wywołanie metoda lub funkcja interfejsu API w aplikacji, zwraca identyfikator GUID.

Transact-SQL NEWID funkcja i funkcja API w aplikacji i metod Generuj nowy uniqueidentifier wartości z numerem identyfikacyjnym ich karty sieciowej plus unikatowy numer z zegara Procesora.Każda karta sieciowa ma unikatowy numer identyfikacyjny.uniqueidentifier Wartości, który jest zwracany przez NEWID jest generowany przy użyciu karty sieciowej na serwerze.uniqueidentifier Wartości zwracanych przez funkcje API aplikacji i metod jest generowany przy użyciu karty sieciowej klient.

A uniqueidentifier wartość zazwyczaj nie jest zdefiniowana jako stała.Można określić uniqueidentifier stała się w następujący sposób:

  • Format ciąg znaków: '6F9619FF-8B86-D011-B42D-00C04FC964FF'

  • Binarny format: 0xff19966f868b11d0b42d00c04fc964ff

uniqueidentifier Typ danych nie automatycznego generowania nowych identyfikatorów dla dodaje się wiersze w sposób wykonuje właściwość tożsamości.Na przykład, aby uzyskać nowy uniqueidentifier wartości, tabela musi mieć DEFAULT Określanie klauzula NEWID lub NEWSEQUENTIALID Funkcja, lub INSERT należy użyć instrukcji NEWID funkcji.

CREATE TABLE MyUniqueTable
   (UniqueColumn   UNIQUEIDENTIFIER      DEFAULT NEWID(),
   Characters      VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO

Ostrzeżenie

Można wygenerować identyfikatorów GUID do zmniejszenia rywalizacja strona na NEWSEQUENTIALID poziom liścia poziomu indeksów.NEWSEQUENTIALID może być używany tylko z ograniczeń DOMYŚLNYCH na kolumnach tabela typu uniqueidentifier.

uniqueidentifierkolumna mogą zawierać wiele wystąpień indywidualnego uniqueidentifier wartości, chyba że ograniczenia klucza podstawowego i są również określone dla kolumna.kolumna klucz obcy, który odwołuje się do uniqueidentifier klucz podstawowy w innej tabela będzie miał wiele wystąpień indywidualnego uniqueidentifier wartości po wielu wierszy odwołania tego samego klucz podstawowy w źródło tabela.

Tabela może mieć wiele uniqueidentifier kolumny.Jeden uniqueidentifier kolumna dla każdej tabela można określić z właściwość ROWGUIDCOL.Właściwość ROWGUIDCOL wskazuje, że uniqueidentifier wartości kolumna jednoznacznie identyfikują wiersze w tabela.Jednakże właściwość nie robić nic wymusić to.Unikatowość musi być wymuszone za pomocą innych mechanizmów, takich jak określanie ograniczenie klucza podstawowego dla kolumna.The ROWGUIDCOL property is primarily used by Microsoft SQL Server replication.Scalania replikacja i replikacja transakcyjna , których użycie subskrypcje aktualizacji uniqueidentifier kolumny, aby upewnić się, że wiersze są unikatowo identyfikowane przez wiele kopii tabela.

uniqueidentifier Typ danych ma następujące wady:

  • Wartości są długie i nieznany.Dzięki temu je coraz trudniej wpisz poprawnie i trudniejsze dla użytkowników do zapamiętania.

  • Wartości są losowo i nie może zaakceptować wzorkami może uczynić je bardziej zrozumiały dla użytkowników.

  • Nie ma możliwości, aby określić kolejność, w której uniqueidentifier wartości zostały wygenerowane.Nie są one dostosowane do istniejących aplikacji, które zależą od szeregowo inkrementacja wartości klucz.

  • W 16 bajtów uniqueidentifier Typ danych jest względnie większy niż inne typy danych, takie jak 4-bajtowe liczby całkowite.Oznacza to, że indeksy utworzone za pomocą uniqueidentifier klucze mogą być stosunkowo wolniej niż przy użyciu indeksów int klucz.

Należy rozważyć użycie właściwość tożsamości podczas globalnego unikatowości nie jest wymagana lub gdy posiadające szeregowo kolejnym klucz jest preferowany.