Seguimiento o notificación de cambios en la base de datos: inserciones y actualizaciones principalmente

StackOverflow https://stackoverflow.com/questions/320864

  •  11-07-2019
  •  | 
  •  

Pregunta

¿Cómo puedo rastrear o recibir notificaciones cada vez que se inserta o actualiza un registro en un DB? Me gustaría notificar a una aplicación externa de los cambios casi en tiempo real cada vez que ocurran dichos cambios en la base de datos. ¿Existen formas independientes de DBMS y de lenguaje de programación de aplicaciones para hacer esto? Si no, ¿es posible con MS Access y MS SQL Server en particular? Estoy buscando evitar el sondeo continuo de DB, por supuesto.

¿Fue útil?

Solución

Con SQL Server es posible cargar una DLL dentro del propio SQL Server y llamar métodos desde esto con procedimientos almacenados extendidos. La DLL podría notificar a otras aplicaciones, generalmente a través de un socket TCP.

Otros consejos

Creo que la última versión de Microsoft SQL Server le permite generar eventos en su código .NET en función de las condiciones y eventos del servidor. No lo he probado, y no he oído hablar de ninguna forma 'independiente de DBMS' de hacerlo (sin sondear DB cada X milisegundos).

Con MS-Access, realizo un seguimiento de los cambios de registros o adiciones de registros con campos en la tabla principal que almacenan el nombre de usuario y la fecha cuando se crea o actualiza el registro.

Debe usar una API de Windows para registrar el nombre de usuario, generalmente se ejecuta cuando se abre el formulario del panel de control.

Estoy cavando para encontrar un lugar alejado para rastrear cambios específicos. Mi base de datos se utiliza para la gestión de proyectos. Me gustaría hacer un seguimiento de lo que se cambió específicamente, no solo quién y cuándo lo he hecho ahora.

Creo que esto cumple con los requisitos de la pregunta original. Luego puedo agregar la API de Windows que lee el nombre del usuario.

Private Sub Form_BeforeInsert (Cancelar como entero)    Yo! UserCreated = UCase (CurrentUser ())    Me! DateCreated = Now () Fin Sub

Private Sub Form_BeforeUpdate (Cancelar como entero)    Me! DateModified = Now ()    Yo! UserModified = UCase (CurrentUser ()) Fin Sub

- Mike

Para hacer esto con SQL Server, utilice el Servicio de notificaciones: escriba un archivo dll que se suscriba a las notificaciones de la base de datos para las actualizaciones de datos que puede procesar de alguna manera.

Sin embargo, MS ha dicho que están eliminando esto de SQL Server 2008 .

Oracle tiene algo similar (aunque tienden a dejar su tecnología en su lugar), pero no he visto nada que sea neutral en la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top