Identity

28/11/2003 - 00:28 por Daniel Carrizales | Informe spam
Estimados Amigo

Tengo un problema con el Identity de una tabla. SQL server
2000.

El problema se resume en que se esta insertando y
actualizando en una de pedidos cuya llave es un campo con
propiedad Identity que se incremente de 1 en 1.

Bueno les comento que se me estan perdiendo registros ya
que no se estan manteniendo la secuencia de la llave, no
tengo la menor idea del porque sucede esto, si tubieran
alguna información les agradeceré que me lo envíen por
correo, supongo que debe ser por bloqueos de la Base de
datos que existen dos registros que compiten por el mismo
recurso pero uno de ellos no puede escribir y por lo tanto
se salta la propiedad del Identity

mil gracias a todos uds por su ayuda.


Daniel

Preguntas similare

Leer las respuestas

#6 Miguel Egea
29/11/2003 - 16:25 | Informe spam
El problema de portalsql.com es que es una redirección a
www.configuracionesintegrales.com/miguele, lo hago por que est empresa me
regala el hosting, ya que regalamos servicio al menos que no nos cueste el
dinero :-E Sin embargo encima de todos los enlaces aparece el link en la
barra de estado. además si pulsais encima de cualquier link con la tecla
mayúscula aparece su dirección real, en este caso
http://www.configuracionesintegrale...p?articulo!9

Por cierto y a modo de OT, gracias a ustedes seguramente acabemos el año con
más de 200.000 visitas diferentes y una media de 1500 páginas servidas de
forma diaria. ¡Gracias!



=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==


"Javier Loria" escribió en el mensaje
news:
Hola:
www.portalsql.com NO permite que lo haga directamente ya que no pone
los enlaces, pero si en el la pagina principal buscas "Claves Naturales"


te
aparece de primero en la lista de articulos.
Te envio el copia del test:
==> Hola Miguel:
Que tan bien sale librado el IDENTITY de las transacciones?
Revisa el siguiente codigo:
/* Codigo con IDENTITY */
DROP TABLE Test
GO
CREATE TABLE Test(
TestID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TestName varchar(20) NOT NULL
)
GO
INSERT TEST
VALUES ('Uno')
INSERT TEST
VALUES ('Dos')
INSERT TEST
VALUES ('Tres')
GO
SELECT * FROM TEST
GO
DBCC CHECKIDENT(Test)

BEGIN TRAN
INSERT TEST
VALUES ('Cuatr')
ROLLBACK TRAN
GO
INSERT TEST
VALUES ('Cuatro')

SELECT * FROM TEST

DBCC CHECKIDENT(Test)

Si usas una seleccion pura transaccional de SQL:
/* Codigo sin IDENTITY */
DROP TABLE TEST
GO
CREATE TABLE Test(
TestID INT --IDENTITY(1,1)
NOT NULL PRIMARY KEY,
TestName varchar(20) NOT NULL
)
GO
INSERT TEST
SELECT COALESCE(MAX(TESTID),0)+1, 'Uno'
FROM TEST

INSERT TEST
SELECT COALESCE(MAX(TESTID),0)+1, 'Dos'
FROM TEST

INSERT TEST
SELECT COALESCE(MAX(TESTID),0)+1, 'Tres'
FROM TEST

GO
SELECT * FROM TEST
GO

BEGIN TRAN
INSERT TEST
SELECT COALESCE(MAX(TESTID),0)+1, 'Cuatr'
FROM TEST
ROLLBACK TRAN
GO

SELECT * FROM TEST

INSERT TEST
SELECT COALESCE(MAX(TESTID),0)+1, 'Cuatro'
FROM TEST

SELECT * FROM TEST

Realmente quieres meter un "elemento" no TRANSACCIONAL a tu base de datos,
pudiento usar TRANSACCIONES reales?

Saludos,

Javier Loria
Costa Rica (MVP)
=>
Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Daniel Carrizales escribio:
> Javier, me gustaría ver ese artículo pero estoy con
> restricciones en el internet, te agradeceré que me
> indiques en el artículo en donde hace referencia a lo que
> me indicas y si lo puedes copiar hacia esta página y
> además que me copies el Link ya que lo tengo que sustentar
> a gerencia
>
> Mil gracias por tu ayuda
>
> Daniel
>
>> Hola Daniel:
>> El Identity no soporta transacciones, si por alguna razon se
>> produjera un rollback se pierde la secuencia. Revisa un articulo en
>> www.portalsql.com llamada Claves Naturales o Artificiales?, es un
>> resumen de una entretenida polemica de este foro.
>> Saludos,
>>
>> Javier Loria
>> Costa Rica
>> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
>> que pueda ser copiado y pegado al Query Analizer.
>> La version de SQL y Service Pack tambien ayuda.
>>
>> Daniel Carrizales escribio:
>>> Estimados Amigo
>>>
>>> Tengo un problema con el Identity de una tabla. SQL server
>>> 2000.
>>>
>>> El problema se resume en que se esta insertando y
>>> actualizando en una de pedidos cuya llave es un campo con
>>> propiedad Identity que se incremente de 1 en 1.
>>>
>>> Bueno les comento que se me estan perdiendo registros ya
>>> que no se estan manteniendo la secuencia de la llave, no
>>> tengo la menor idea del porque sucede esto, si tubieran
>>> alguna información les agradeceré que me lo envíen por
>>> correo, supongo que debe ser por bloqueos de la Base de
>>> datos que existen dos registros que compiten por el mismo
>>> recurso pero uno de ellos no puede escribir y por lo tanto
>>> se salta la propiedad del Identity
>>>
>>> mil gracias a todos uds por su ayuda.
>>>
>>>
>>> Daniel
>>
>>
>> .


Respuesta Responder a este mensaje
#7 Antonio Ortiz
29/11/2003 - 17:41 | Informe spam
A que te refieres con que 'no soporta transacciones'?,
Es solo a que la columna 'identity' no regresa al numero anterior o que la
trasaccion falla?

Gracias

Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net







"Javier Loria" escribió en el mensaje
news:
Hola Daniel:
El Identity no soporta transacciones, si por alguna razon se produjera
un rollback se pierde la secuencia. Revisa un articulo en


www.portalsql.com
llamada Claves Naturales o Artificiales?, es un resumen de una entretenida
polemica de este foro.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Daniel Carrizales escribio:
> Estimados Amigo
>
> Tengo un problema con el Identity de una tabla. SQL server
> 2000.
>
> El problema se resume en que se esta insertando y
> actualizando en una de pedidos cuya llave es un campo con
> propiedad Identity que se incremente de 1 en 1.
>
> Bueno les comento que se me estan perdiendo registros ya
> que no se estan manteniendo la secuencia de la llave, no
> tengo la menor idea del porque sucede esto, si tubieran
> alguna información les agradeceré que me lo envíen por
> correo, supongo que debe ser por bloqueos de la Base de
> datos que existen dos registros que compiten por el mismo
> recurso pero uno de ellos no puede escribir y por lo tanto
> se salta la propiedad del Identity
>
> mil gracias a todos uds por su ayuda.
>
>
> Daniel


Respuesta Responder a este mensaje
#8 Javier Loria
29/11/2003 - 19:17 | Informe spam
Hola Antonio:
El concepto de una transaccion es o que todo esta hecho o nada esta
hecho (Atomicidad).
Cuando usas un identity y decides hacer rollback (o si se cae en el
enlace, o el sofware, o se rompe alguna regla o algo) el identity NO vuelve
al estado previo. A eso me refiero con que no soporta transacciones.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Antonio Ortiz escribio:
A que te refieres con que 'no soporta transacciones'?,
Es solo a que la columna 'identity' no regresa al numero anterior o
que la trasaccion falla?

Gracias

Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net







"Javier Loria" escribió en el mensaje
news:
Hola Daniel:
El Identity no soporta transacciones, si por alguna razon se
produjera un rollback se pierde la secuencia. Revisa un articulo en
www.portalsql.com llamada Claves Naturales o Artificiales?, es un
resumen de una entretenida polemica de este foro.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Daniel Carrizales escribio:
Estimados Amigo

Tengo un problema con el Identity de una tabla. SQL server
2000.

El problema se resume en que se esta insertando y
actualizando en una de pedidos cuya llave es un campo con
propiedad Identity que se incremente de 1 en 1.

Bueno les comento que se me estan perdiendo registros ya
que no se estan manteniendo la secuencia de la llave, no
tengo la menor idea del porque sucede esto, si tubieran
alguna información les agradeceré que me lo envíen por
correo, supongo que debe ser por bloqueos de la Base de
datos que existen dos registros que compiten por el mismo
recurso pero uno de ellos no puede escribir y por lo tanto
se salta la propiedad del Identity

mil gracias a todos uds por su ayuda.


Daniel
Respuesta Responder a este mensaje
#9 Antonio Ortiz
30/11/2003 - 05:42 | Informe spam
Hola Javier,

Disculpa la insistencia, pero aun no me queda claro. Esto es de mi especial
interes.

Utilizo trasacciones, todas mis tablas tienen un campo 'identity'. En una
estrategia similar a:

INICIO Transaccion
actualizaciones
Si Falla entonces ROLLBACK
FIN de Transaccion

Que es lo que pasa si hago un rollbak?, no se cancela toda la transaccion? o
si agregue nuevos registros, el identity, continuara en ultimo numero?, a
eso te refieres con 'el identity NO vuelve al estado previo' ?

(En mis simulaciones de errores, la trasaccion se cancela completamente,
cuento con MSDE 1.0 y Access 2000 como cliente)

Gracias

Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net






"Javier Loria" escribió en el mensaje
news:
Hola Antonio:
El concepto de una transaccion es o que todo esta hecho o nada esta
hecho (Atomicidad).
Cuando usas un identity y decides hacer rollback (o si se cae en el
enlace, o el sofware, o se rompe alguna regla o algo) el identity NO


vuelve
al estado previo. A eso me refiero con que no soporta transacciones.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Antonio Ortiz escribio:
> A que te refieres con que 'no soporta transacciones'?,
> Es solo a que la columna 'identity' no regresa al numero anterior o
> que la trasaccion falla?
>
> Gracias
>
> Antonio Ortiz Ramirez
> asesor en sistemas
>
> www.aortiz.net
>
>
>
>
>
>
>
> "Javier Loria" escribió en el mensaje
> news:
>> Hola Daniel:
>> El Identity no soporta transacciones, si por alguna razon se
>> produjera un rollback se pierde la secuencia. Revisa un articulo en
>> www.portalsql.com llamada Claves Naturales o Artificiales?, es un
>> resumen de una entretenida polemica de este foro.
>> Saludos,
>>
>> Javier Loria
>> Costa Rica
>> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
>> que pueda ser copiado y pegado al Query Analizer.
>> La version de SQL y Service Pack tambien ayuda.
>>
>> Daniel Carrizales escribio:
>>> Estimados Amigo
>>>
>>> Tengo un problema con el Identity de una tabla. SQL server
>>> 2000.
>>>
>>> El problema se resume en que se esta insertando y
>>> actualizando en una de pedidos cuya llave es un campo con
>>> propiedad Identity que se incremente de 1 en 1.
>>>
>>> Bueno les comento que se me estan perdiendo registros ya
>>> que no se estan manteniendo la secuencia de la llave, no
>>> tengo la menor idea del porque sucede esto, si tubieran
>>> alguna información les agradeceré que me lo envíen por
>>> correo, supongo que debe ser por bloqueos de la Base de
>>> datos que existen dos registros que compiten por el mismo
>>> recurso pero uno de ellos no puede escribir y por lo tanto
>>> se salta la propiedad del Identity
>>>
>>> mil gracias a todos uds por su ayuda.
>>>
>>>
>>> Daniel


Respuesta Responder a este mensaje
#10 Maximiliano d. Accotto
30/11/2003 - 06:12 | Informe spam
Antonio!! Disculpa q me meta!! pero lo q Dice nuestro amigo Javier es lo
siguiente:

Si haces lo q planteas la transaccion tendra su roolback tranquilamente pero
el identity no (me eplico?) quiero decir q te pueden quedar aujeros!!

ahora yo tambien uso identitys pero no me interesa q sean secuenciales, ni
tampoco son llaves primarias (no conviene para nada usarlos para estas
cosas)

Entonces si tu identity va por el 100 haces una nueva transaccion y la
cancelas!! cuando quieras inserter nuevamente el identity sera 102 (por mas
q el 101 lo hayas cancelado)

Pregunta: tan importante es esto del autonumerico? porque la verdad yo solo
como te repetia antes los uso para una sola funcion y no como primario de
una tabla!!

un saludo enorme!!


"Antonio Ortiz" escribió en el mensaje
news:
Hola Javier,

Disculpa la insistencia, pero aun no me queda claro. Esto es de mi


especial
interes.

Utilizo trasacciones, todas mis tablas tienen un campo 'identity'. En una
estrategia similar a:

INICIO Transaccion
actualizaciones
Si Falla entonces ROLLBACK
FIN de Transaccion

Que es lo que pasa si hago un rollbak?, no se cancela toda la transaccion?


o
si agregue nuevos registros, el identity, continuara en ultimo numero?, a
eso te refieres con 'el identity NO vuelve al estado previo' ?

(En mis simulaciones de errores, la trasaccion se cancela completamente,
cuento con MSDE 1.0 y Access 2000 como cliente)

Gracias

Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net






"Javier Loria" escribió en el mensaje
news:
> Hola Antonio:
> El concepto de una transaccion es o que todo esta hecho o nada esta
> hecho (Atomicidad).
> Cuando usas un identity y decides hacer rollback (o si se cae en el
> enlace, o el sofware, o se rompe alguna regla o algo) el identity NO
vuelve
> al estado previo. A eso me refiero con que no soporta transacciones.
> Saludos,
>
>
> Javier Loria
> Costa Rica
> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
> que pueda ser copiado y pegado al Query Analizer.
> La version de SQL y Service Pack tambien ayuda.
> Antonio Ortiz escribio:
> > A que te refieres con que 'no soporta transacciones'?,
> > Es solo a que la columna 'identity' no regresa al numero anterior o
> > que la trasaccion falla?
> >
> > Gracias
> >
> > Antonio Ortiz Ramirez
> > asesor en sistemas
> >
> > www.aortiz.net
> >
> >
> >
> >
> >
> >
> >
> > "Javier Loria" escribió en el mensaje
> > news:
> >> Hola Daniel:
> >> El Identity no soporta transacciones, si por alguna razon se
> >> produjera un rollback se pierde la secuencia. Revisa un articulo en
> >> www.portalsql.com llamada Claves Naturales o Artificiales?, es un
> >> resumen de una entretenida polemica de este foro.
> >> Saludos,
> >>
> >> Javier Loria
> >> Costa Rica
> >> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
> >> que pueda ser copiado y pegado al Query Analizer.
> >> La version de SQL y Service Pack tambien ayuda.
> >>
> >> Daniel Carrizales escribio:
> >>> Estimados Amigo
> >>>
> >>> Tengo un problema con el Identity de una tabla. SQL server
> >>> 2000.
> >>>
> >>> El problema se resume en que se esta insertando y
> >>> actualizando en una de pedidos cuya llave es un campo con
> >>> propiedad Identity que se incremente de 1 en 1.
> >>>
> >>> Bueno les comento que se me estan perdiendo registros ya
> >>> que no se estan manteniendo la secuencia de la llave, no
> >>> tengo la menor idea del porque sucede esto, si tubieran
> >>> alguna información les agradeceré que me lo envíen por
> >>> correo, supongo que debe ser por bloqueos de la Base de
> >>> datos que existen dos registros que compiten por el mismo
> >>> recurso pero uno de ellos no puede escribir y por lo tanto
> >>> se salta la propiedad del Identity
> >>>
> >>> mil gracias a todos uds por su ayuda.
> >>>
> >>>
> >>> Daniel
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida