![]() |
Conectar varias Bases de Datos con Server DataSnap
Hola amigos:
Agradecería me den sus opiniones o consejos sobre el siguiente tema. Tengo una aplicación Cliente-Servidor funcionado perfectamente, el programa Servidor, instalado en el Servidor donde está la Base de Datos MSSQL, da servicio a los clientes accediendo a una Base de Datos (BD). Ahora se me propone que el programa pueda atender a varias empresas y como requisito necesario es que cada una de ellas tenga, físicamente, su propia BD. Y es aquí donde se me presenta el problema para seleccionar la mejor estrategia a implementar para atender a varias BD teniendo un solo Programa Servidor (SRV). Con el programa cliente no hay mayor problema en decidir que BD se debe usar. Considerando que en el SRV hay un TSQLConnection donde se indica en su propiedad DataBase = DB1, las alternativas que estoy estudiando son las siguientes: 1. Duplicar el SRV, establecer otro puerto de conexión, cambiando la conexión TSQLConnection para que use otra BD y todos los componenetes dbExpress para que apunten al nuevo TSQLConnection . Pero aquí tendría que tener tantas copias de SRV ejecutándose en el Servidor como empresas hubiera además del problema de mantenimiento de los procedimientos almacenados (PROC) en las respectivas BD. 2. Duplicar el Data Module remoto del SRV, y modificar lo necesario en el TSQLConnection del nuevo Data Module según el punto 1. Aquí tendría una sola ejecución de SRV, siendo necesario hacer esta duplicación por cada nueva empresa que se desee incorporar. 3. Dejar el SRV tal como está, siendo necesario modificar todos los PROC, incluyendo como parámetro el nombre de la BD y tabla la cual el PROC atiende teniendo que armar la sentencia SQL en una variable para su ejecución final, algo así como el siguiente código ejemplo:
Con esta opción tendría que hacer una modificación importante en los PROC y en aquellos que tengo escritos en el programa cliente, pero la ventaja sería la del mantenimiento posterior y no importaría la cantidad de empresas. No me he decidido todavía por ninguna de ellas, por eso recurro a ustedes por si me pueden indicar alguna otra alternativa que sea segura, su implantación sea más sencilla y el mantenimiento posterior normal. Muchas gracias. |
Hola,
¿cómo tienes programado el servidor? ¿DataSnap? ¿utilizas Borland Socket Server? ¿socket connection) Si utilizas socket connection, puede implementar un procedimiento remoto en el servidor y que reciba un parámetro indicándole a qué base de datos se ha de conectar el tSQLConnection. Si es así, te podría indicar cómo hacerlo. Un saludo. |
Hola Manuc:
Mi conexión es DataSnap, uso procedimientos remotos a través del TsqlServerMethod para otros procesos. No sé como hacer para cambiar la conexión a la Base de Datos, si me puedes ayudar te lo agradeceré. Pero también me queda la duda, ¿qué pasaría si un usuario usa la BD1 y otro cambia a la BD2 teniéndo un solo TSQLConnection? Saludos |
Hola gcaffe,
Divido las respuestas, para que no se haga muy pesao. :-) Cita:
Si conectas dos usuarios al mismo tiempo, realmente en el servidor se deben estar levantando dos instancias de tu capa SQL y cada una de ellas tendrá una copia del componente SQLConnection. De tal forma que puedes manipular las propiedades del SQLConnection, sin que afecte al resto de instancias. |
Al segundo tema:
Cita:
Esto sería todo. Yo tengo Delphi 6. Imagino que en versiones posteriores puede ser que haya cambiado algún icion o alguna opción. Puede parecer un tanto "complicado", pero hayas hecho 200 o 300 se le coge el hilo. :D Si tienes alguna duda, comentamelo sin problemas. Espero que se entienda. Un saludo. |
Por favor, lee nuestra guía de estilo, gracias por tu colaboración :)
Cita:
|
La franja horaria es GMT +2. Ahora son las 06:58:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi