vODBC

vForum para suscriptores profesionales de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
Avatar de Usuario
vSISPRO
vAdviser
vAdviser
Mensajes: 791
Registrado: 30 Ago 2007, 09:10
Ubicación: Terrassa-(41.554526),(2.013588)
Contactar:

vODBC

Mensaje por vSISPRO » 14 Ene 2008, 13:03

Estoy traspasando datos de Velneo a SQL, realmente por actualización en parte izquierda se ejecuta un proceso que envia una SQL con un INSERT para agragar los datos a la correspondiente tabla SQL, el problemilla es que cuando envio de forma consecutiva mas de 1000 registros llega un momento que el ODBC dice que no se puede establecer la comunicacion. Siempre se ejecuta igual, se establece la conexión, se envia la sentencia y se cierra la conexión todo ello para cada uno de los registros enviados, alguien tiene alguna idea.

Saludos.
No es lo que tengo, es Velneo.
Agustin Mestre

Avatar de Usuario
agonzalez
Velneo
Mensajes: 115
Registrado: 12 Sep 2007, 11:37

Mensaje por agonzalez » 14 Ene 2008, 14:04

Está constatado que algunos servidores, a pesar de mandarles cerrar la conexión las mantienen abiertas para optimizar las conexiones y no las cierran hasta que no se haya cerrado la aplicación de origen.

Dado que está ejecutando en cliente-servidor, le aconsejo que aplicase la solución siguiente:

La idea es que la ejecución de las sentencias SQL sea hecha en una sesión de vClient abierta en el servidor, al ejecutarla habrá un menú con dos opciones autodisparables:

Una que: Recorra lista/abra conexión/ejecute sentencia/cierre conexión. (Proceso en primer plano).

Otra que cierre el vClient.

Lo que tiene que hacer en el proceso, dado que la base de datos con que se conecta parece tener un limite de 1000 conexiones abiertas, es procesar solamente tantos registros como conexiones soporte (por ejemplo, 1000).

En la siguiente ejecución del vClient se ejecutarán los 1000 siguientes y así sucesivamente.

Este vClient será lanzado, por ejemplo, desde un demonio del servidor, tal y como hacemos nosotros en el vCRM para ejecutar los procesos de envío y descarga de correo.

Saludos.
Opinión personal de agonzalez no vinculante a Velneo.
life is soft

cabella
vLeader
vLeader
Mensajes: 1013
Registrado: 21 Sep 2005, 16:01
Ubicación: Madrid - España

Mensaje por cabella » 14 Ene 2008, 16:21

Hola,

Aprovecho este hilo para hacer un comentario, puesto que estoy viendo que este tipo de "soluciones" se repiten demasiado.

Considero que abrir un vClient que haga cosas automaticamente en el servidor es una "solución" un poco CHAPUCERA.

Me pongo en el siguiente caso: mi aplicación tiene servidor de email como en el vCRM, vODBC como el que plantea vSispro y además genera ficheros PDF desde la web. Para los tres la solución es la misma ... ABRIR UN vCLIENT EN EL SERVIDOR ... Es decir que a parte de tener un servidor de aplicaciones tengo un servidor para ese servidor de aplicaciones.

¿Cómo se come eso??? A parte de todo lo que hace el vServer, tengo un vClient haciendo un montón de cosas ... y con el agravante de que NO se puede minimizar como el vServer, que si se pudiera ... todavía ... Y para controlar que este abierto ... también se las trae ... (ya se que la solución se da en el vCRM ...).

Además, tener el vClient abierto es un punto de fallo para los servicios de la aplicación y mala imagen de empresa con el cliente.

Es que como la cosa siga así la tecnología será Cliente-Servidor-Servidor de servidor ....

Esto es una crítica constructiva con la finalidad de poder mejorar.

Un saludo a todo el equipo.

Avatar de Usuario
agonzalez
Velneo
Mensajes: 115
Registrado: 12 Sep 2007, 11:37

Mensaje por agonzalez » 14 Ene 2008, 17:39

Hola Cabella, lo primero muchas gracias por tus comentarios.

No pretendo rebatirte, ya que estoy de acuerdo con mucho de lo que has dicho, aunque sí me gustaría explicar un poco el motivo de este planteamiento y ofrecerte alguna alternativa que pueda mejorar la situación de tus instalaciones.

Las razones que llevan a implementar determinados servicios en una sesión de vClient, son múltiples pero la más importante es que deberíamos tender a desvincular el servidor de tareas críticas para garantizar así su óptimo funcionamiento.

Ejemplos: Un servidor de impresión, un servidor de correo, un proceso que se conecte por TCP a un servidor remoto... Si todo va bien no tiene por qué dar problemas pero, por ejemplo, si hay algún problema con la impresora, con la conexión al servidor de correo o el servidor remoto, bloquearíamos el servidor. Mientras se espera la respuesta del programa llamado, se paraliza la ejecución del servidor, lo que puede llegar a causar muchos trastornos al resto de los usuarios que estén conectados con él.

No es imprescindible que la conexión de vClient se realice en la misma maquina en la que esta el servidor, es decir que el vClient lo puedes ejecutar en cualquier maquina de manera que no afecte al rendimiento de la maquina del vServer.

Por otro lado también puedes poner el vClient en una sesión de escritorio remoto, de manera que ningún usuario tenga acceso a dicha sesión del vClient.

Espero haberte aportado un poco de claridad a este tema.

Saludos.
Opinión personal de agonzalez no vinculante a Velneo.
life is soft

Responder