limpiar - sql server flag 272
El valor de la columna de identidad salta repentinamente a 1001 en el servidor sql (3)
Creo que tienes la explicación en un comentario sobre este elemento de conexión. Failover o Restart Results en Reseed of Identity
Para impulsar el rendimiento de las máquinas de alta gama, presentamos preasignación para el valor de identidad en 2012. Y esta característica se puede desactivar mediante el uso de TF 272 (entonces obtendrá el comportamiento de 2008R2).
Las propiedades de identidad se almacenan por separado en metadatos. Si se utiliza un valor en la identidad y se invoca el incremento, se establecerá el nuevo valor inicial. Ninguna operación, incluidos Rollback, Failover, ... puede cambiar el valor de inicialización excepto DBCC reseed. La conmutación por error se aplica para el objeto de tabla, pero no el objeto de identidad. Por lo tanto, para la conmutación por error, puede llamar al punto de control antes de la conmutación por error manual, pero puede ver brecha para casos no planificados. Si la brecha es una preocupación, entonces le sugiero que use TF 272.
Para el cierre del administrador de control, tenemos una solución para la próxima versión (con otro TF). Esta solución se ocupará de la mayoría de los casos de cierre del administrador de control.
Esta pregunta ya tiene una respuesta aquí:
- El incremento de identidad está saltando en la base de datos de SQL Server 6 respuestas
Estoy usando el servidor Sql 2012 (Denali). Me pregunto por qué todos los valores de la columna de identidad comienzan desde 1001 y así sucesivamente. En la columna Identidad inicial comienza desde 1,2 y así sucesivamente y agrega identidad sin problemas, pero de repente salta a 1001,1002 en adelante para toda la tabla en la base de datos que contiene la columna de identidad. Cuál podría ser la razón. Por favor asiste.
Microsoft ha cambiado la forma en que manejan los valores de identidad en SQL Server 2012 y, como resultado, puede ver las brechas de identidad entre sus registros después de reiniciar su instancia de servidor SQL o su máquina servidor. Puede haber algunas otras razones para estas brechas de id, puede deberse al reinicio automático del servidor después de instalar una actualización.
Puedes usar debajo dos opciones
- Use trace flag 272 o Esto causará que se genere un registro de registro para cada valor de identidad generado. El rendimiento de la generación de identidad puede verse afectado al activar esta marca de seguimiento.
Use un generador de secuencia con la configuración NO CACHE
Establecer Trace Flag 272 en SQL Server 2012 que está esperando aquí
Abra el "Administrador de configuración de SQL Server"
- Haga clic en "SQL Server Services" en el panel izquierdo
- Haga clic derecho en el nombre de su instancia de SQL Server en el panel derecho -> Predeterminado: SQL Server (MSSQLSERVER)
- Haga clic en "Propiedades"
- Haga clic en "Parámetros de inicio"
- En el cuadro de texto "especificar un parámetro de inicio", escriba "-T272"
- Haga clic en "Agregar"
- Confirma los cambios
Supongo que podrías usar la secuencia en su lugar, la secuencia te da un control 100% completo, y en muchos sentidos es muy superior en comparación con la identidad ... La identidad es tan condenadamente fácil y conveniente
msdn.microsoft.com/en-us/library/ff878091.aspx
Por lo que sé, cuando haces un inserto con identidad y falla, la identidad se usa de todos modos, verificada
con la secuencia puedes hacer que "llene" huecos usando ciclo. Aunque, como señala Amy Barrett, esto se crea fuera del alcance de la transacción.
Hay una optimización del rendimiento cuando está usando caché que también podría ser útil.