2010-07-29 61 views
17

Quiero escuchar los cambios a los datos en una base de datos de SQL Server desde C#. Tenía la esperanza de que hubiera algún tipo de oyente que podría usar para determinar si los datos que tengo son obsoletos. A pesar de ser un escenario bastante común, no puedo encontrar ninguna solución que no sea simplemente sondear la base de datos.Escucha de cambio de base de datos del servidor SQL C#

utilizo LINQ a SQL acceder a los datos y por lo tanto tienen un objeto DataContext, esperaba que pudiera escuchar durante un evento en datos modificados pero me parece que no puede encontrar uno.

Aprecio que sea una barrera no trivial (del método C# al SQL Server DB), la razón por la que esperaba que este fuera un problema resuelto es que es un requisito común para las GUI. Si no es posible escuchar actualizaciones sobre cómo mantener los datos mostrados en una GUI fresca (cuando está respaldada por un origen de datos de SQL Server).

Aunque esto no es para el trabajo con GUI, esperaba adaptar algo de ese ámbito.

¿Hay alguna forma de suscribirse a los eventos de cambio de la base de datos de SQL Server en C#?

Respuesta

3

El DataContext no le ofrecerá ningún tipo de funcionalidad de escucha con SQL Server. Su mejor opción es crear una aplicación de sondeo, o incluso un hilo separado que sondee la base de datos periódicamente para detectar cambios y exponer un evento que su aplicación principal pueda escuchar.

0

Utilizaría una tabla con una sola fila en el archivo db para catalogar los últimos eventos actualizados, insertados o eliminados y luego crear desencadenantes en cada tabla de importancia para actualizar esta tabla y luego sondear esta tabla para ver los cambios.

+0

Esto no funcionaría para los DB que cambian rápidamente, ya que necesitaría estar monitoreando constantemente la tabla, y lo que es peor, no hay garantía de que no se salte los cambios entre los cheques. – PedroC88

Cuestiones relacionadas