Udostępnij za pomocą


NEWSEQUENTIALID (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Tworzy identyfikator GUID większy niż jakikolwiek identyfikator GUID wygenerowany wcześniej przez tę funkcję na określonym komputerze od czasu uruchomienia systemu Windows. Po ponownym uruchomieniu systemu Windows identyfikator GUID może rozpocząć się ponownie z niższego zakresu, ale nadal jest globalnie unikatowy. Jeśli kolumna GUID jest używana jako identyfikator wiersza, użycie może NEWSEQUENTIALID być szybsze niż użycie NEWID funkcji. Dzieje się tak, ponieważ NEWID funkcja powoduje losowe działanie i używa mniej buforowanych stron danych. Użycie NEWSEQUENTIALID pomaga również całkowicie wypełnić dane i strony indeksu.

Ważne

Jeśli prywatność jest problemem, nie używaj tej funkcji. Można odgadnąć wartość następnego wygenerowanego identyfikatora GUID i w związku z tym uzyskać dostęp do danych skojarzonych z tym identyfikatorem GUID.

NEWSEQUENTIALID to otoka funkcji UuidCreateSequential systemu Windows z zastosowanym przetasowaniami bajtów.

Ostrzeżenie

Funkcja UuidCreateSequential ma zależności sprzętowe. W programie SQL Server klastry wartości sekwencyjnych mogą opracowywać się, gdy bazy danych (takie jak zawarte bazy danych) są przenoszone na inne komputery. W usłudze Azure SQL Database i gdy używasz funkcji Always On, klastry wartości sekwencyjnych mogą się rozwijać, jeśli baza danych zostanie przejdą w tryb failover na inny komputer.

Transact-SQL konwencje składni

Składnia

NEWSEQUENTIALID ( )

Typy zwracane

uniqueidentifier

Uwagi

NEWSEQUENTIALID można używać tylko z DEFAULT ograniczeniami w kolumnach tabeli typu uniqueidentifier. Przykład:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID()
);

Gdy NEWSEQUENTIALID jest używany w DEFAULT wyrażeniach, nie można go łączyć z innymi operatorami skalarnymi. Na przykład nie można wykonać następującego kodu:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT dbo.myfunction(NEWSEQUENTIALID())
);

W poprzednim przykładzie myfunction() jest funkcją skalarną zdefiniowaną przez użytkownika, która akceptuje i zwraca uniqueidentifier wartość.

NEWSEQUENTIALID Nie można odwoływać się do zapytań.

Za pomocą NEWSEQUENTIALID polecenia można wygenerować identyfikatory GUID, aby zmniejszyć podziały stron i losowe we/wy na poziomie liścia indeksów.

Każdy identyfikator GUID wygenerowany przy użyciu NEWSEQUENTIALID jest unikatowy na tym komputerze. Identyfikatory GUID generowane przy użyciu NEWSEQUENTIALID są unikatowe na wielu komputerach tylko wtedy, gdy komputer źródłowy ma kartę sieciową.