PDA

Ver la Versión Completa : el objeto 'sysmergearticles' no es válido....


Cabanyaler
21-07-2006, 09:36:07
Hola compañeros.
Tengo un error que me sale al ejecutar un procedimiento almacenado sobre un total de dos tablas sql. A continuación expongo el contexto y cual es el mensaje de error.

Contexto.
Tengo una BBDD en el servidor que a su vez se replica en su modo de mezcla con otras dos BBDD de otros dos servidores en ciudades diferentes. La sincronización es correctamente realizada todos los días. En los tres servidores tengo el w2003 server con los MSSQL 2000 con sus services packs.
En la tabla destino la clave principal es un campo autoincrementativo, el cual no está incluido en el select del procedimiento. Pero creo que no será necesario incluirlo ya que se asignará de modo automático el valor al hacerse la inserción ¿o no?. tampoco inserto ningún campo memo, ni tipo Blob.

Operación deseada a realizar
Quiero insertar todas las tuplas que existan en una tabla y no existan en la otra, pero me salta el error, y creo que debe ser por la replicación

INSERT INTO Clientes (Codigo_Cli, ApeNom_Cli, Nif_Cli, Dir_Cli, Loc_Cli, NumPos_Cli, CodPos_Cli, CodCen_Cli, NumPta_Cli, NumTel_Cli, NumFax_Cli, Email_Cli, Comentario_Cli, Company_Cli, Pais_Cli, Apellido1FIS_Cli, Apellido2FIS_Cli, DNIFIS_Cli, NombreFIS_Cli, DirFIS_Cli, LocFIS_Cli, ProFIS_Cli, Seguro_Cli, Fecha_Cli, Via_Cli, CodigoComCli)
SELECT Codigo_Cli, ApeNom_Cli, Nif_Cli, Dir_Cli, Loc_Cli, NumPos_Cli, CodPos_Cli, CodCen_Cli, NumPta_Cli, NumTel_Cli, NumFax_Cli, Email_Cli, Comentario_Cli, Company_Cli, Pais_Cli, Apellido1FIS_Cli, Apellido2FIS_Cli, DNIFIS_Cli, NombreFIS_Cli, DirFIS_Cli, LocFIS_Cli, ProFIS_Cli, Seguro_Cli, Fecha_Cli, Via_Cli, CodigoComCli
FROM Fichero_txt
WHERE NOT EXISTS (SELECT *
FROM Clientes
WHERE ((Clientes.Codigo_Cli = Fichero_Txt.Codigo_Cli) AND (Clientes.ApeNom_Cli = Fichero_Txt.ApeNom_Cli)))


Error que me sale:
Desde la ejecución de la aplicación llamando al store procedure mediante un ADOCommand:
"El objeto 'dbo.sysmergearticles' no es válido"

Si ejecuto el comando directamente desde el Enterprise manager:
Servidor:mensaje 208, nivel 16, estado 1, procedimiento ins_C20F2A050A90444F8FF636DACD62A23A, línea 16
El nombre de objeto 'dbo.sysmergearticles' no es válido.

Si en lugar de ejecutarlo mediante SP, lo hago con bucle recorriendo la tabla Fichero_txt hasta el final y si no Locate sobre la Clientes entonces insertar, me sale tambien el error "El objeto 'dbo.sysmergearticles' no es válido"

He estado mirando y dbo.sysmergearticles contiene una fila por cada artículo de mezcla definido en la base de datos local. Esta tabla se almacena en la base de datos de publicaciones. Y me pregunto ¿que tiene esto que ver con el UPDATE que estoy haciendo o intento hacer yo?. Bien es cierto que la primera UPDATE deberá insertar aproximadamante 8800 tuplas, ¿y qué!!?.

Si alguien me puede ayudar, quizá este viernes pueda ver algo, sino después e Benicassim el Lunes seguiré... ¡peligro!:D

Cabanyaler
03-08-2006, 09:52:47
Perdón se me olvidó poner cual era la solución .
Es un bug o fallo del SQL Server.
¿Y como lo sé?, muy sencillo.
Lo que hice fué crearme una BBDD deprueba para probar los nuevos trozos de código de la ampliación de mi aplicación. La BBDD original, tiene una replicación de mezcla con otrso dos servidores.
Pues bien al hacer esa BBDD de prueba a partir de la restauración de una copia de seguridad de la original, seguramente algún proceso no se copia o restaura, en este caso, dando este error a la ejecución de la aplicación.
Hice la pruaba sobre los datos originales y validos y todo funciono como la seda.
Gracias y un saludo.
:p