Udostępnij za pośrednictwem


Za pomocą uniqueidentifier danych

The uniqueidentifier data type stores 16-byte binary values that operate as globally unique identifiers (GUIDs).Identyfikator GUID jest unikatowym numerem binarny; inny komputer w świecie wygeneruje duplikat wartości identyfikatora GUID.Głównym zastosowaniem dla identyfikatora GUID jest przypisywanie identyfikator, który musi być unikatowa w sieci, która składa się z wielu komputerów w wielu witrynach.

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

  • W Transact-SQL Instrukcja partia lub skryptu, wywołując funkcja NEWID.

  • W kodzie aplikacji poprzez wywołanie metoda lub funkcja interfejsu API aplikacji, które zwraca wartość identyfikatora GUID.

The Transact-SQL NEWID funkcja and the application API functions and methods generate new uniqueidentifier values from the identification number of their network card plus a unique number from the CPU clock. Każda karta sieciowa ma unikatowy numer identyfikacyjny.The uniqueidentifier value that is returned by NEWID is generated by using the network card on the server.The uniqueidentifier value returned by application API functions and methods is generated by using the network card on the klient.

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

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

  • Binarny format: 0xff19966f868b11d0b42d00c04fc964ff

The uniqueidentifier data type does not automatically generate new IDs for inserted rows in the way the właściwość tożsamości does. Na przykład, aby otrzymać nowy uniqueidentifier Tabela wartości, musi mieć DEFAULT Określanie klauzula NEWID lub NEWSEQUENTIALID Funkcja, lub INSERT należy użyć instrukcji NEWID Funkcja.

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

Uwaga

NEWSEQUENTIALID służy do generowania identyfikatorów GUID w celu zmniejszenia rywalizacji strona na poziomie poziom liścia indeksów.NEWSEQUENTIALID mogą być używane tylko w przypadku ograniczenia DEFAULT dla typu kolumny w tabela uniqueidentifier.

uniqueidentifier kolumna mogą zawierać wiele wystąpień indywidualnego uniqueidentifier wartości, chyba że ograniczenia UNIQUE lub klucz podstawowy są także określone dla kolumna. kolumna klucz obcy, która odwołuje się uniqueidentifier klucz podstawowy w innej tabela będzie miał wiele wystąpień osoby uniqueidentifier wartości po wielu wierszy odwołać tego samego klucz podstawowy w tabela źródłowej.

Tabela może mieć wiele uniqueidentifier kolumny. Jeden uniqueidentifier kolumna dla każdej tabela można określić z właściwością ROWGUIDCOL. Wskazuje, że właściwość ROWGUIDCOL uniqueidentifier wartości kolumna jednoznacznie identyfikują wiersze z tabela. Jednak właściwość nie robi wszystko, co do wymuszania to.Unikatowość musi być wymuszone za pomocą innych mechanizmów, takich jak określanie ograniczenia klucz podstawowy dla kolumna.The ROWGUIDCOL property is primarily used by Microsoft SQL Server replication.Scalanie replikacja i replikacja transakcyjnej, których aktualizacji użycia subskrypcji uniqueidentifier kolumny, aby upewnić się, że wiersze są unikatowo identyfikowane przez wiele kopii tabela.

The uniqueidentifier data type has the following disadvantages:

  • Wartości są długie i nieznany.Dzięki temu, ich trudne dla użytkowników poprawnie wpisywać hasła i trudniejsze dla użytkowników do zapamiętania.

  • Wartości są losowe i nie może zaakceptować żadnych wzorców, które mogą uczynić je bardziej zrozumiały dla użytkowników.

  • Nie ma możliwości do określenia kolejności, w którym uniqueidentifier wartości zostały wygenerowane. Nie są odpowiednie do istniejącej aplikacji zależnych od pojedynczo zwiększanie wartości klucz.

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

Należy wziąć pod uwagę przy użyciu właściwość IDENTITY, gdy globalne unikatowości nie jest wymagany lub gdy pojedynczo kolejnym kluczu jest preferowany.