Mercator utilise dans diverses colonnes de la base de données des valeurs aléatoires de 10 caractères (ident). En C#, ces valeurs sont générées par Api.Ident(). En SQL, on utilise fréquemment right(newid(), 10). Cette solution n'est pas optimale parce que newid() renvoie une représentation lisible d'une suite de bytes exprimés selon leur valeur hexadécimale. Dès lors, cette fonction SQL renvoie uniquement les caractères de 0 à 9 et de A à F. c-à-d un jeu de 16 caractères.
La méthode Api.Ident, quant à elle, utilise 36 caractères : A-Z et 0-9.
Utiliser un jeu de caractères plus restreint augmente la probabilité de doublons.
Dès lors, nous recommandons d'utiliser cette syntaxe SQL pour générer un ident :
declare @ident char(10)
exec SP_IDENT @ident output
select @ident
Nombre de combinaisons possibles pour 10 caractères sur un jeu de :
- 16 caractères : 1610 = 1 099 511 627 776
- 36 caractères : 3610 = 3 656 158 440 062 976