Ver Mensaje Individual
  #1  
Antiguo 19-12-2010
gcaffe gcaffe is offline
Miembro
 
Registrado: oct 2004
Posts: 53
Reputación: 20
gcaffe Va por buen camino
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:
Código SQL [-]
DECLARE @DBase varchar(20);
DECLARE @dbTabla25 varchar(50);
DECLARE @SQL nvarchar(MAX);
SET @DBase = 'Ges120.dbo.';
SET @dbTabla25 = @DBase+'Tabla25';
SET @SQL = 'SELECT * FROM '+@dbTabla25;
EXECUTE SP_EXECUTESQL@SQL;

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.
Responder Con Cita