No actualiza columna identity luego de una actualización de suscripcion

11/06/2009 - 01:17 por CHAR72 | Informe spam
Hola! tengo una sdf vacia, luego de realizar una replicación con un sql2000,
pasan los datos a las tablas, pero en la que tiene un autonumerico no le
actualiza el valor, pues cuando intento realizar un insert me da error de
valores duplicados, buscando en google encontre una solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos

Preguntas similare

Leer las respuestas

#1 Maxi
11/06/2009 - 04:07 | Informe spam
Hola, no lo inserta o no lo actualiza? Si en el mobil solo recibis y no
haces inserciones lo ideal seria que no este definada esa tabla como
identity entonces se genera solo en un lugar. Si tenes identitys tenes que
habilitar mas cosas para poder hacer el insert de un lado al otro.

Si lo que no te funciona es el update contra un campo identity entonces
revisa el Store que creo en el subscriptor de replicacion y fijate ahi en el
codigo que no quiera hacer un update sobre el campo, sino no anda. Esos
store estan para cada operacion y tabla por tabla.

Pero no me queda claro si no te funciona el insert o el update



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola! tengo una sdf vacia, luego de realizar una replicación con un
sql2000, pasan los datos a las tablas, pero en la que tiene un
autonumerico no le actualiza el valor, pues cuando intento realizar un
insert me da error de valores duplicados, buscando en google encontre una
solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos




Respuesta Responder a este mensaje
#2 CHAR72
12/06/2009 - 00:52 | Informe spam
Hola Maxi!

Funcionar, funciona todo, los insert y los updates. Explico con ejemplo
mejor.

Server: Tabla: XXX
ID

1
2
3

Mobile: Tabla XXX (sin crear)

Sincronizo, en el mobile se crea la tabla XXX y se copian los ID (1,2,3)

Como los insert, se realizan en el mobile, luego de la sicronización,
intento agregar un registro pero me da error de ID duplicado, porque? porque
luego de la sincronización no se actualizó el SEED (el proximo ID) de la db.
Por ese motivo, busco el valor maximo y actualizo el campo identity de la
tabla del mobile y luego si puedo realizar los inserts's

Se entendió?

Saludos

Carlos

"Maxi" escribió en el mensaje
news:
Hola, no lo inserta o no lo actualiza? Si en el mobil solo recibis y no
haces inserciones lo ideal seria que no este definada esa tabla como
identity entonces se genera solo en un lugar. Si tenes identitys tenes que
habilitar mas cosas para poder hacer el insert de un lado al otro.

Si lo que no te funciona es el update contra un campo identity entonces
revisa el Store que creo en el subscriptor de replicacion y fijate ahi en
el codigo que no quiera hacer un update sobre el campo, sino no anda. Esos
store estan para cada operacion y tabla por tabla.

Pero no me queda claro si no te funciona el insert o el update



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola! tengo una sdf vacia, luego de realizar una replicación con un
sql2000, pasan los datos a las tablas, pero en la que tiene un
autonumerico no le actualiza el valor, pues cuando intento realizar un
insert me da error de valores duplicados, buscando en google encontre una
solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos




Respuesta Responder a este mensaje
#3 Maxi
12/06/2009 - 14:09 | Informe spam
Hola, se entiende perfecto ahora :) lo que debes hacer es cambiar la
estructura del mobile para esa tabla y decirle que los identity por ejemplo
empiecen en 100000.
Esto es un truco para cuando usas identitys.

Se entiende?



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola Maxi!

Funcionar, funciona todo, los insert y los updates. Explico con ejemplo
mejor.

Server: Tabla: XXX
ID

1
2
3

Mobile: Tabla XXX (sin crear)

Sincronizo, en el mobile se crea la tabla XXX y se copian los ID (1,2,3)

Como los insert, se realizan en el mobile, luego de la sicronización,
intento agregar un registro pero me da error de ID duplicado, porque?
porque luego de la sincronización no se actualizó el SEED (el proximo ID)
de la db.
Por ese motivo, busco el valor maximo y actualizo el campo identity de la
tabla del mobile y luego si puedo realizar los inserts's

Se entendió?

Saludos

Carlos

"Maxi" escribió en el mensaje
news:
Hola, no lo inserta o no lo actualiza? Si en el mobil solo recibis y no
haces inserciones lo ideal seria que no este definada esa tabla como
identity entonces se genera solo en un lugar. Si tenes identitys tenes
que habilitar mas cosas para poder hacer el insert de un lado al otro.

Si lo que no te funciona es el update contra un campo identity entonces
revisa el Store que creo en el subscriptor de replicacion y fijate ahi en
el codigo que no quiera hacer un update sobre el campo, sino no anda.
Esos store estan para cada operacion y tabla por tabla.

Pero no me queda claro si no te funciona el insert o el update



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola! tengo una sdf vacia, luego de realizar una replicación con un
sql2000, pasan los datos a las tablas, pero en la que tiene un
autonumerico no le actualiza el valor, pues cuando intento realizar un
insert me da error de valores duplicados, buscando en google encontre
una solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos










Respuesta Responder a este mensaje
#4 CHAR72
16/06/2009 - 22:37 | Informe spam
Hola maxi! realmente, no entendí! pero no te preocupes, pensaba que existia
"algo" que no sabia configurar y que no nesecitaba de un truco, como te
mencione, funciona bien buscar el max y actualizar la dinicon de la
estructura.

Es mas que todo para mantener las mismas tablas en el mobile y el server.

Saludos y gracias

Carlos

"Maxi" escribió en el mensaje
news:
Hola, se entiende perfecto ahora :) lo que debes hacer es cambiar la
estructura del mobile para esa tabla y decirle que los identity por
ejemplo empiecen en 100000.
Esto es un truco para cuando usas identitys.

Se entiende?



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola Maxi!

Funcionar, funciona todo, los insert y los updates. Explico con ejemplo
mejor.

Server: Tabla: XXX
ID

1
2
3

Mobile: Tabla XXX (sin crear)

Sincronizo, en el mobile se crea la tabla XXX y se copian los ID (1,2,3)

Como los insert, se realizan en el mobile, luego de la sicronización,
intento agregar un registro pero me da error de ID duplicado, porque?
porque luego de la sincronización no se actualizó el SEED (el proximo ID)
de la db.
Por ese motivo, busco el valor maximo y actualizo el campo identity de la
tabla del mobile y luego si puedo realizar los inserts's

Se entendió?

Saludos

Carlos

"Maxi" escribió en el mensaje
news:
Hola, no lo inserta o no lo actualiza? Si en el mobil solo recibis y no
haces inserciones lo ideal seria que no este definada esa tabla como
identity entonces se genera solo en un lugar. Si tenes identitys tenes
que habilitar mas cosas para poder hacer el insert de un lado al otro.

Si lo que no te funciona es el update contra un campo identity entonces
revisa el Store que creo en el subscriptor de replicacion y fijate ahi
en el codigo que no quiera hacer un update sobre el campo, sino no anda.
Esos store estan para cada operacion y tabla por tabla.

Pero no me queda claro si no te funciona el insert o el update



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola! tengo una sdf vacia, luego de realizar una replicación con un
sql2000, pasan los datos a las tablas, pero en la que tiene un
autonumerico no le actualiza el valor, pues cuando intento realizar un
insert me da error de valores duplicados, buscando en google encontre
una solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos










Respuesta Responder a este mensaje
#5 Maxi
16/06/2009 - 23:04 | Informe spam
Char a ver, el tema es asi, vos tenes dos tablas, una en el mobil y otra en
el server.
Si ambas generan registros y tenes identity se pueden pisar porque puede
haber dos numero 1 en ambos lugares.

Como lo resolves

1) Adicionando alguna columna mas a la pk por ejemplo que diga dispositivo
entonces ya no es el identity solo con lo cual es complicado que existan
duplicados
2) Cambias los rangos de los identity (lo que te explique) que es
simplemente a un identity decirle que empiece en 100000 y al otro en 0





Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola maxi! realmente, no entendí! pero no te preocupes, pensaba que
existia "algo" que no sabia configurar y que no nesecitaba de un truco,
como te mencione, funciona bien buscar el max y actualizar la dinicon de
la estructura.

Es mas que todo para mantener las mismas tablas en el mobile y el server.

Saludos y gracias

Carlos

"Maxi" escribió en el mensaje
news:
Hola, se entiende perfecto ahora :) lo que debes hacer es cambiar la
estructura del mobile para esa tabla y decirle que los identity por
ejemplo empiecen en 100000.
Esto es un truco para cuando usas identitys.

Se entiende?



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola Maxi!

Funcionar, funciona todo, los insert y los updates. Explico con ejemplo
mejor.

Server: Tabla: XXX
ID

1
2
3

Mobile: Tabla XXX (sin crear)

Sincronizo, en el mobile se crea la tabla XXX y se copian los ID (1,2,3)

Como los insert, se realizan en el mobile, luego de la sicronización,
intento agregar un registro pero me da error de ID duplicado, porque?
porque luego de la sincronización no se actualizó el SEED (el proximo
ID) de la db.
Por ese motivo, busco el valor maximo y actualizo el campo identity de
la tabla del mobile y luego si puedo realizar los inserts's

Se entendió?

Saludos

Carlos

"Maxi" escribió en el mensaje
news:
Hola, no lo inserta o no lo actualiza? Si en el mobil solo recibis y no
haces inserciones lo ideal seria que no este definada esa tabla como
identity entonces se genera solo en un lugar. Si tenes identitys tenes
que habilitar mas cosas para poder hacer el insert de un lado al otro.

Si lo que no te funciona es el update contra un campo identity entonces
revisa el Store que creo en el subscriptor de replicacion y fijate ahi
en el codigo que no quiera hacer un update sobre el campo, sino no
anda. Esos store estan para cada operacion y tabla por tabla.

Pero no me queda claro si no te funciona el insert o el update



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de
noticias:
Hola! tengo una sdf vacia, luego de realizar una replicación con un
sql2000, pasan los datos a las tablas, pero en la que tiene un
autonumerico no le actualiza el valor, pues cuando intento realizar un
insert me da error de valores duplicados, buscando en google encontre
una solucion, que es:

Select max(ID) As MaxID from AAA
MaxID += 1
ALTER TABLE AAA ALTER COLUMN ID IDENTITY (" & MaxID & ", 1)"

pero piendo que deberia existir otra.

Saludos

Carlos
















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