Los valores de las columnas de identidad de SQL server comienzan en 0 en lugar de 1
Tengo una situación extraña con algunas tablas en mi base de datos que comienzan sus IDs desde 0, a pesar de que TABLE CREATE tiene IDENTIDAD(1,1). Esto es así para algunas mesas, pero no para otras. Ha funcionado hasta hoy.
He intentado restablecer la columna de identidad:
DBCC CHECKIDENT (SyncSession, reseed, 0);
Pero los nuevos registros comienzan con 0. He intentado hacer esto para todas las tablas, pero algunas todavía comienzan desde 0 y otras desde 1.
Alguna sugerencia?
(estoy usando SQL Server Express 2005 con Servicios avanzados)
6 answers
Desde DBCC CHECKIDENT
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
Si no se han insertado filas en tabla desde que se creó, o todos las filas se han eliminado utilizando el Sentencia TRUNCATE TABLE, la primera fila insertada después de ejecutar DBCC CHECKIDENT usa new_reseed_value como identidad. De lo contrario, la siguiente fila insertado usa new_reseed_value + el valor de incremento actual.
Por lo tanto, esto se espera para una tabla vacía o truncada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-18 15:55:15
Si pasa un valor de resembrado, la base de datos iniciará la identidad a partir de ese nuevo valor:
DBCC CHECKIDENT (SyncSession, RESEED, 0); --next record should be 0 + increment
Sin embargo, no tienes que pasar el valor a, si no lo haces IDENTITY(a,b)
se usará en su lugar:
DBCC CHECKIDENT (SyncSession, RESEED); --next record should be the seed value 'a'
Esto suele ser una mejor práctica, ya que deja la tabla más cerca de su estado inicial creado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-05 14:07:58
Esto es lógico, ya que ha cambiado (resembrado) el valor de identidad a cero ?
DBCC CHECKIDENT (SyncSession, reseed, 1)
Volverá a sembrar su columna de identidad y se asegurará de que el primer registro nuevo comience con 1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-07 08:43:46
Tengo el mismo problema, restaurar desde una copia de seguridad después de modificar la base de datos. Solo añado un registro ficticio y luego lo borro... a continuación, establezca el RESEMBRADO en 0. Parece funcionar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-30 15:01:10
Prueba esto
DECLARE @c TABLE (TanvtechId varchar(10),NewTanvtechId Varchar(10))
INSERT INTO @c
SELECT TanvtechId , Row_Number() OVER (ORDER BY TanvtechId ) from Tanvtech
UPDATE G
SET G.TanvtechId =a.NewTanvtechId
FROM Tanvtech as G INNER JOIN @c as a ON a.TanvtechId =G.TanvtechId
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-21 12:22:07
DBCC CHECKIDENT ( Table_Name, RESEED, 0 )
Esta es una manera de comenzar un id
con Zero(0)
, luego eliminar todas las filas de la tabla y volver a poner los datos en la tabla.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-26 08:17:26