Delen via


NEWSEQUENTIALID (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Hiermee maakt u een GUID die groter is dan een GUID die eerder is gegenereerd door deze functie op een opgegeven computer sinds Windows is gestart. Nadat Windows opnieuw is opgestart, kan de GUID opnieuw beginnen vanuit een lager bereik, maar is het nog steeds wereldwijd uniek. Wanneer een GUID-kolom wordt gebruikt als rij-id, kan het gebruik NEWSEQUENTIALID sneller zijn dan het gebruik van de NEWID functie. Dit komt doordat de functie willekeurige activiteit veroorzaakt en minder gegevenspagina's in de NEWID cache gebruikt. Het gebruik NEWSEQUENTIALID helpt ook om de gegevens en indexpagina's volledig te vullen.

Belangrijk

Als privacy een probleem is, gebruikt u deze functie niet. Het is mogelijk om de waarde van de volgende gegenereerde GUID te raden en daarom toegang te krijgen tot gegevens die zijn gekoppeld aan die GUID.

NEWSEQUENTIALID is een wrapper over de Windows UuidCreateSequentiële functie, met een aantal byte shuffling toegepast.

Waarschuwing

De UuidCreateSequential functie heeft hardwareafhankelijkheden. Op SQL Server kunnen clusters met sequentiële waarden zich ontwikkelen wanneer databases (zoals ingesloten databases) naar andere computers worden verplaatst. In Azure SQL Database en wanneer u AlwaysOn gebruikt, kunnen clusters met sequentiële waarden worden ontwikkeld als de database een failover naar een andere computer uitvoert.

Transact-SQL syntaxis-conventies

Syntaxis

NEWSEQUENTIALID ( )

Retourtypen

uniqueidentifier

Opmerkingen

NEWSEQUENTIALID kan alleen worden gebruikt met DEFAULT beperkingen voor tabelkolommen van het type uniqueidentifier. Voorbeeld:

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

Wanneer NEWSEQUENTIALID deze wordt gebruikt in DEFAULT expressies, kan deze niet worden gecombineerd met andere scalaire operatoren. U kunt bijvoorbeeld de volgende code niet uitvoeren:

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

In het vorige voorbeeld myfunction() is een scalaire door de gebruiker gedefinieerde scalaire functie die een uniqueidentifier waarde accepteert en retourneert.

NEWSEQUENTIALID kan niet worden verwezen in query's.

U kunt NEWSEQUENTIALID GUID's genereren om paginasplitsingen en willekeurige IO te verminderen op het leaf-niveau van indexen.

Elke GUID die wordt gegenereerd met behulp NEWSEQUENTIALID van is uniek op die computer. GUID's die worden gegenereerd door gebruik NEWSEQUENTIALID , zijn alleen uniek op meerdere computers als de broncomputer een netwerkkaart heeft.