NEWSEQUENTIALID (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Crea un identificador único global (GUID) que es mayor que cualquier GUID generado previamente por esta función en un equipo específico desde que se inició Windows. Después de reiniciar Windows, el GUID se puede volver a iniciar desde un intervalo más bajo, pero sigue siendo globalmente único. Cuando una columna de GUID se utiliza como identificador de fila, el uso de NEWSEQUENTIALID puede ser más rápido que el uso de la función NEWID. La razón es que la función NEWID causa actividad aleatoria y utiliza menos páginas de datos en caché. El uso de NEWSEQUENTIALID también ayuda a rellenar por completo las páginas de datos y de índices.
Importante
Si la protección de la privacidad es de particular importancia, no utilice esta función. Es posible estimar el valor del GUID generado a continuación y, por tanto, obtener acceso a los datos asociados con dicho GUID.
NEWSEQUENTIALID es un contenedor de la función UuidCreateSequential de Windows que tiene aplicado algo de orden de bytes aleatorio.
Advertencia
La función UuidCreateSequential tiene dependencias de hardware. En SQL Server, se pueden general clústeres de valores secuenciales cuando las bases de datos (por ejemplo, las bases de datos independientes) se mueven a otros equipos. Cuando se usa Always On en SQL Database, se pueden generar clústeres de valores secuenciales si la base de datos conmuta por error a otro equipo.
Convenciones de sintaxis de Transact-SQL
Sintaxis
NEWSEQUENTIALID ( )
Tipo de valor devuelto
uniqueidentifier
Comentarios
NEWSEQUENTIALID() solo se puede usar con restricciones DEFAULT en columnas de tabla de tipo uniqueidentifier. Por ejemplo:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID());
Cuando NEWSEQUENTIALID() se utiliza en expresiones DEFAULT, no se puede combinar con otros operadores escalares. Por ejemplo, no se puede ejecutar lo siguiente:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));
En el ejemplo anterior, myfunction()
es una función escalar definida por el usuario que acepta y devuelve un valor uniqueidentifier
.
No se puede hacer referencia a NEWSEQUENTIALID en las consultas.
Puede usar NEWSEQUENTIALID para generar GUID a fin de reducir la contención de páginas y E/S aleatoria de nivel hoja en los índices.
Cada GUID generado utilizando NEWSEQUENTIALID es único en ese equipo. Los GUID generados utilizando NEWSEQUENTIALID solo son únicos en varios equipos si el equipo de origen tiene una tarjeta de red.
Consulte también
NEWID (Transact-SQL)
Operadores de comparación (Transact-SQL)