Condividi tramite


NEWSEQUENTIALID (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

Crea un GUID maggiore di qualsiasi GUID generato in precedenza da questa funzione in un computer specificato dall'avvio di Windows. Dopo il riavvio di Windows, il GUID può ricominciare da un intervallo inferiore, ma è ancora globalmente univoco. Quando una colonna GUID viene usata come identificatore di riga, l'uso NEWSEQUENTIALID di può essere più veloce rispetto all'uso della NEWID funzione . Ciò è dovuto al fatto che la NEWID funzione causa un'attività casuale e usa meno pagine di dati memorizzate nella cache. L'uso NEWSEQUENTIALID di consente anche di riempire completamente i dati e le pagine di indice.

Importante

Se la privacy è un problema, non usare questa funzione. È possibile indovinare il valore del GUID generato successivo e, di conseguenza, accedere ai dati associati a tale GUID.

NEWSEQUENTIALID è un wrapper sulla funzione Windows UuidCreateSequential , con alcuni byte shuffling applicati.

Avviso

La UuidCreateSequential funzione ha dipendenze hardware. In SQL Server si possono sviluppare cluster di valori sequenziali quando i database (ad esempio, i database indipendenti) vengono spostati in altri computer. Nel database SQL di Azure e quando si usa Always On, i cluster di valori sequenziali possono sviluppare se il database esegue il failover in un computer diverso.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

NEWSEQUENTIALID ( )

Tipi restituiti

uniqueidentifier

Osservazioni:

NEWSEQUENTIALID può essere usato solo con DEFAULT vincoli sulle colonne della tabella di tipo uniqueidentifier. Ad esempio:

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

Quando NEWSEQUENTIALID viene usato nelle DEFAULT espressioni, non può essere combinato con altri operatori scalari. Ad esempio, non è possibile eseguire il codice seguente:

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

Nell'esempio precedente myfunction() è una funzione scalare definita dall'utente che accetta e restituisce un valore uniqueidentifier.

NEWSEQUENTIALID Non è possibile fare riferimento alle query.

È possibile usare NEWSEQUENTIALID per generare GUID per ridurre le divisioni di pagina e le operazioni di I/O casuali a livello foglia di indici.

Ogni GUID generato tramite NEWSEQUENTIALID è univoco in tale computer. I GUID generati tramite NEWSEQUENTIALID sono univoci in più computer solo se il computer di origine ha una scheda di rete.