NEWSEQUENTIALID (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Crea un GUID maggiore di qualsiasi GUID generato in precedenza da questa funzione in un computer specificato dall'avvio di Windows. Dopo avere riavviato Windows, è possibile avviare di nuovo il GUID da un intervallo inferiore, ma ancora globalmente univoco. Quando una colonna GUID viene utilizzata come identificatore di riga, l'utilizzo di NEWSEQUENTIALID può essere più veloce rispetto all'utilizzo della funzione NEWID, poiché la funzione NEWID causa un'attività casuale e utilizza un numero inferiore di pagine di dati memorizzate nella cache. L'utilizzo di NEWSEQUENTIALID consente inoltre di completare le pagine di dati e di indice.

Importante

In caso di problemi di riservatezza, non utilizzare questa funzione. È possibile intuire il valore del GUID che verrà generato successivamente e accedere ai dati associati a tale GUID.

NEWSEQUENTIALID è un wrapper sulla funzione UuidCreateSequential di Windows, a cui è applicata una riproduzione casuale.

Avviso

La funzione UuidCreateSequential 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. Quando si usa Always On in SQL Database, si possono sviluppare cluster di valori sequenziali se si effettua il failover del database in un computer diverso.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

NEWSEQUENTIALID ( )  

Tipo restituito

uniqueidentifier

Osservazioni:

La funzione NEWSEQUENTIALID() può essere usata solo con vincoli DEFAULT su colonne di tabella di tipo uniqueidentifier. Ad esempio:

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

Quando viene specificata in espressioni DEFAULT, la funzione NEWSEQUENTIALID() non può essere utilizzata in combinazione con altri operatori scalari. Ad esempio, la seguente operazione non è valida:

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.

Non è possibile fare riferimento a NEWSEQUENTIALID all'interno di query.

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

Ogni GUID generato usando NEWSEQUENTIALID è univoco nel computer. I GUID generati usando NEWSEQUENTIALID sono univoci in più computer solo se il computer di origine dispone di una scheda di rete.

Vedi anche

NEWID (Transact-SQL)
Operatori di confronto (Transact-SQL)