Triggers Sql Server

23/03/2009 - 19:32 por kapsule | Informe spam
Hola a todos.

Estoy desarrollando una aplicación la cual se conecta a una base de datos
sql server para realizar un scan de una tabla con el fin de obtener un aviso
cuando alguien inserta un registro nuevo. Esta función la realizo actualmente
con un timer pero según me han comentado esto se podria hacer con un trigger.
A nivel de base de datos se como crear un trigger pero no se como enlazarlo
con C# para que me llegue el evento. ¿Es posible?

Gracias.
 

Leer las respuestas

#1 Alberto Poblacion
24/03/2009 - 08:33 | Informe spam
"kapsule" wrote in message
news:
Estoy desarrollando una aplicación la cual se conecta a una base de datos
sql server para realizar un scan de una tabla con el fin de obtener un
aviso
cuando alguien inserta un registro nuevo. Esta función la realizo
actualmente
con un timer pero según me han comentado esto se podria hacer con un
trigger.
A nivel de base de datos se como crear un trigger pero no se como
enlazarlo
con C# para que me llegue el evento. ¿Es posible?



Hay varias opciones:

La primera es que crees una tabla diminuta que sólo tenga un campo que
sea "número de la última modificación", y que el trigger sobre la tabla
principal incremente dicho campo cada vez que haya un cambio sobre la tabla
grande. Tu proceso de "polling" con un timer hace entonces la consulta sobre
la tabla pequeña, que será más rápida que sobre la tabla grande. Esto es lo
que hace automáticamente el aspnet_regsql.exe cuando le das las
opcíones -ed, -et y -t para que habilite el SqlCacheDependency sobre una
tabla.

La segunda es usar la integración del CLR con Sql Server 2005. Se crea un
Trigger hecho con .Net, se instala en el Sql Server, y dentro del trigger se
usa cualquiera de los mecanismos de comunicación inter-procesos de .Net (por
ejemplo, Remoting) para que el trigger se comunique con tu programa.
Recuerda que para que esto pueda funcionar, hay que instalar el ensamblado
dentro de Sql Server con el permiso External_Access.

La tercera es usar los servicios de notificación de Sql Server 2005.
Busca en MSDN "SqlNotificationRequest" y "SqlDependency".
http://msdn.microsoft.com/es-es/lib...72133.aspx

Preguntas similares