NEWSEQUENTIALID (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Crée une valeur GUID supérieure à celle d'un GUID précédemment généré par cette fonction sur un ordinateur donné depuis le démarrage de Windows. Après le redémarrage de Windows, le GUID peut redémarrer à partir d'une plage inférieure, mais est toujours globalement unique. Lorsqu'une colonne GUID est utilisée comme identificateur de ligne, l'utilisation de NEWSEQUENTIALID peut être plus rapide que celle de la fonction NEWID. Cela est dû au fait que la fonction NEWID génère une activité aléatoire et utilise moins de pages de données mises en cache. L'utilisation de NEWSEQUENTIALID vous aide également à remplir complètement les pages de données et d'index.

Important

Si la confidentialité des données pose un problème, n'utilisez pas cette fonction. Il est possible de deviner la valeur du GUID généré suivant, et donc d'accéder aux données qui lui sont associées.

NEWSEQUENTIALID est un wrapper sur la fonction Windows UuidCreateSequential, avec des octets appliqués aléatoirement.

Avertissement

La fonction UuidCreateSequential a des dépendances matérielles. Sur SQL Server, des clusters de valeurs séquentielles peuvent se développer lors du déplacement de bases de données (par exemple, des bases de données autonomes) vers d’autres ordinateurs. Lorsque vous utilisez Always On sur SQL Database, des clusters de valeurs séquentielles peuvent se développer si la base de données bascule vers un autre ordinateur.

Conventions de la syntaxe Transact-SQL

Syntaxe

NEWSEQUENTIALID ( )  

Type renvoyé

uniqueidentifier

Remarques

NEWSEQUENTIALID() peut être utilisé uniquement avec des contraintes DEFAULT sur des colonnes de table de type uniqueidentifier. Par exemple :

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

Lorsque vous utilisez la fonction NEWSEQUENTIALID() dans des expressions DEFAULT, vous ne pouvez pas la combiner avec d'autres opérateurs scalaires. Par exemple, vous ne pouvez pas exécuter ce qui suit :

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

Dans l'exemple précédent, myfunction() est une fonction scalaire définie par l'utilisateur qui accepte et renvoie une valeur de type uniqueidentifier.

La fonction NEWSEQUENTIALID ne peut pas être référencée dans les requêtes.

Vous pouvez utiliser NEWSEQUENTIALID pour générer des GUID afin de réduire les fractionnements de pages et l'E/S aléatoire au niveau feuille des index.

Chaque GUID généré à l'aide de NEWSEQUENTIALID est unique sur cet ordinateur. Les GUID générés à l'aide de la fonction NEWSEQUENTIALID sont uniques sur plusieurs ordinateurs seulement si l'ordinateur source possède une carte réseau.

Voir aussi

NEWID (Transact-SQL)
Opérateurs de comparaison (Transact-SQL)