2012-05-17 23 views
9

¿Es posible saber cuándo y si el contenido de ciertas tablas en una base de datos ha cambiado? ¿Cómo puede mi SQL Server notificar a las aplicaciones del cliente que otros usuarios han cambiado los datos? ¿Cómo implementar notificaciones de consulta con dbGo?Aplicación de base de datos cliente-servidor: ¿cómo notificar a los clientes que los datos se cambiaron?

¿Mis clientes necesitan sondear la base de datos, o hay un mecanismo de devolución de llamada para esto?

Mi cliente es una aplicación Delphi con TADODataSet, y mi servidor es SQL Server 2005/2008, que atiende a varios clientes.

+1

Posible duplicado http://stackoverflow.com/q/9671284/960757 – TLama

+1

@TLama, todavía no hay una solución concluyente para TADODataSet y SQL-Server allí. – ZigiZ

+1

Si ['this answer'] (http://stackoverflow.com/a/9671708/960757) es correcto, entonces * dbGo (ADO) no admite notificaciones * ... – TLama

Respuesta

1

No, tendría que construir su propio "nivel medio" para hacer esto. La forma más simple es sondear el servidor. Una solución más compleja es construir su propio servidor de "nivel medio" que sondee la base de datos y envíe notificaciones a los clientes (con su propia conexión de cliente).

Una solución intermedia consiste en tener un cliente separado en la encuesta del servidor de las tablas que necesita para "ver" y escribir "indicadores de notificación" en otra tabla de base de datos que los clientes puedan sondear. Al menos de esta manera, los clientes pueden sondear una tabla simple con datos mínimos que enumeran qué ha cambiado y que luego puede leer otra consulta de selección. Mucho menos esfuerzo por parte de los clientes.

+0

También hay una forma de "medio mixto": las mismas aplicaciones de cliente de base de datos que cambian los registros (incluida la lógica del lado del servidor de aplicaciones) pueden enviar la transmisión '¡se cambió el registro!' mensajes a todos los clientes que escuchan en el nivel medio. Esta sería una forma 'inmediata' de notificar a otras aplicaciones sobre el cambio. Además, su 'cliente separado en el servidor' podría ejecutarse en intervalos más largos para reducir la cantidad de sondeo, y podría omitir un ciclo de sondeo cada vez que reciba mensajes de notificación generados por el cliente ... – mjn

Cuestiones relacionadas