Esto tambien te puede servir http://technet.microsoft.com/es-es/library/bb522489(v=sql.105).aspx
Pero como necesita al agente tene en cuenta que este esta disponible a partir de la version Estandard (es decir con Express no se puede). Saludos, Pancho El 29 de abril de 2014, 7:56, francisco prieto <[email protected]>escribió: > Ale, > > Encontre este paquete que se baja aparte... Es precisamente de eventos... > Quizas te sirva. > > http://technet.microsoft.com/en-us/library/bb630282(v=sql.105).aspx > > Saludos, > > Pancho > Córdoba > > > El 28 de abril de 2014, 13:21, Gamazo Martin > <[email protected]>escribió: > >> Buenas tardes, como acotación: >> >> >> >> A parte de todo esto tene en cuenta que si el trigger que está >> insertando, está dentro de una transacción y la misma hace rollback por lo >> que sea, por lógica o deadlock, ese insert vuelve atrás todos los cambios, >> si lo que queres es monitorear si accedió o no, entonces el único insert >> que puede funcionar sin verse afectado por transacción es contra un >> servidor linqueado, insertando en una tabla en otro servidor ya que estas >> conexiones no son afectadas por la transacción. >> >> >> >> Saludos >> >> >> >> >> >> *Martín Gamazo* >> >> *Analista Programador* >> >> Gerencia de Sistemas y Desarrollo Tecnológico >> La Rioja 301 (1214) – Buenos Aires >> >> Teléfonos: 4956-9622 Int. 1461 >> >> Directo: 4956-9761 >> >> e-mail: *[email protected] >> <http://mailnew/[email protected]>* >> Web: *www.oca.com.ar* >> >> >> >> *De:* [email protected] [mailto:[email protected]] *En nombre de *Alejandro >> Paciotti >> *Enviado el:* lunes, 28 de abril de 2014 10:57 a.m. >> *Para:* GUFA List Member >> *Asunto:* [GUFA] OFF-TOPIC: Eventos en SQL SERVER. >> >> >> >> Pancho: si te entendí, solo que no me gusta esa solución. >> >> >> >> Ponete en el lugar del desarrollador del sistema: Desarrollaste una >> aplicación, la tenes en funcionamiento y viene otro programador y te dice: >> Por cada INSERT que hagas en tal, tal y tal tabla voy a disparar un >> TRIGGER que *a)* inserte un registro en otra tabla, o *b) *inserte un >> registro en otra tabla en *otra base de datos*, o bien c) inserte un >> registro en otra tabla en otro motor, que puede ser mysql, firebird o >> postgresql, que la voy a tener funcionando en este linux. >> >> >> >> Las mínimas preguntas que vos te vas a hacer son: ¿cómo va a ser la tabla >> donde vas a insertar? ¿qué pasa si a esa tabla luego la lockea otro >> proceso? ¿ y si está en otro motor, qué pasa si el motor perece, o se >> indispone ? ¿si está en otro motor en otra pc? >> >> >> >> ¿Todo mi sistema va a depender de un mysql que está en un linux en un >> cacharro ahí tirado ? Sostiene el programador del sistema, creo que con >> justa causa. >> >> >> >> >> >> Por eso, creo que lo mas sano es ver el tema de los catcheos de eventos, >> que son o deberían ser muy livianos siempre. >> >> >> >> Ya me pongo a leer sobre el Profiler. Gracias de todas formas. >> >> >> >> >> >> >> [email protected] >> >> >> >> El 28 de abril de 2014, 8:07, francisco prieto <[email protected]> >> escribió: >> >> No no no... >> >> >> >> No me entendiste... >> >> >> >> Si tenes acceso a la base de datos podes crear un trigger en la tabla que >> quieras interceptar y por lo tanto en ese trigger podes disparar un >> procedimiento almacenado o bien insertar los datos en otra tabla que no >> tiene porque esta en la misma base de datos... es mas podes si queres >> insertar datos en una tabla de un motor libre... >> >> >> >> Claro que el acceso a la base de datos que tenes que tener no es un >> acceso de usuario final, tenes que poseer ciertos privilegios para poder >> crear SP. >> >> >> >> En Sql Server hay eventos.... estudia el tema SQL Profiler, pero dichos >> eventos estan orientados a la optimizacion del motor y no a la interacción >> con sus datos. >> >> >> >> Lo otro que podes hacer es armarte un esquema en Firebird o en MySql pero >> que apunte a cualquier base de datos externa, el tema es que los eventos >> que puedas generar en ellos van a apuntar a tu base y no a la externa, >> salvo que en la extena tengas propiedades privilegiadas. >> >> >> >> En fin esa es mi experiencia... en el caso Firebird podes realizale esta >> misma pregunta a Walter Ojeda Valiente que es un maestro en Firebird... te >> paso su blog... http://firebird21.wordpress.com/ >> >> >> >> Saludos, >> >> >> >> Pancho >> >> Córdoba >> >> >> >> El 27 de abril de 2014, 10:47, Alejandro Paciotti < >> [email protected]> escribió: >> >> Supongamos que hay un sistema, y que ese sistema inserta registros en una >> tabla. >> >> Yo no tengo los fuentes de ese sistema pero tengo acceso a la base de >> datos y quiero que cada vez que se inserta un registro en alguna tabla >> específica se ejecute *un programa*. >> >> >> >> Podría hacer lo que dice Pancho y hacer que ese *programa* observe cada >> n segundos una tabla en la base de datos y cuando se insertó un registro >> ejecute lo que tenía que hacer originalmente. >> >> >> >> La verdad, esta solución no me gusta. En C# existe algo así como el >> "system watcher " (no recuerdo exactamente) para una carpeta, que >> interactua con el sistema operativo tal que determinados procedimientos se >> ejecutan cuando se crea o altera algún archivo en esa carpeta. >> >> >> >> El mismo Windows también lo hace, si uno abre el explorador de windows >> dos veces en la misma carpeta y crea un archivo en alguna de esas dos >> ventanas la otra lo muestra casi inmediatamente. No creo que windows use >> "timers"... debe tener algún sistema de eventos y notificaciones. >> >> >> >> De hecho, MSSQLSERVER también lo tiene! el Service >> Broker<http://msdn.microsoft.com/en-us/library/ms166100.aspx> , >> pero los eventos no salen de la instancia de SQL SERVER, o bien, si salen >> pero a otra instancia de SQL SERVER. Lo que yo quiero es que dispare un >> evento en algún puerto, como lo hace FIREBIRD, o MYSQL.. ¿ para qué? Para >> desligarme de tener que usar C# o bien para desligarme de tener que usar >> una instancia de SQLSERVER y programar en lo que se me antoja, sea PYTHON, >> JAVA, RUBY O JAVASCRIPT... >> >> >> >> Otros ejemplos de uso, y quizá muchísimo mas útil que mi necesidad es >> para auditar la performance del motor y de cualquier aplicación, como por >> ejemplo lo que trae SQL SERVER (creo que a partir de 2012) que son los >> eventos extendidos que sirven para: >> >> >> >> >> >> · Encontrar las consultas más caras >> >> · Encontrar las causas principales de la contención de bloqueos >> temporales >> >> · Encontrar una consulta que esté bloqueando otras consultas >> >> · Solucionar problemas de uso excesivo de la CPU producido por >> la recompilación de consultas >> >> · Solucionar problemas de interbloqueos >> >> Sobre este tema pueden leer mucho >> aquí.<http://technet.microsoft.com/es-es/library/bb630282.aspx> >> *Esto no lo conocía cuando hice la pregunta*, lo leí recién ayer >> (ayer... no se si fue ayer o el Viernes, ya estoy perdiendo la noción de >> los días). >> >> >> >> En resumen, lo que yo quiero hacer es un sistema que escuche cuando en >> una base de datos se produzca un evento sin tener la necesidad de alterar >> *nada* de las instrucciones que se utilizan para insertar, borrar y/o >> modificar. >> >> >> >> Para mi, es sumamente importante, ya que de poder hacer esto podría >> integrar cualquier sistema hecho con BDD en SQLSERVER solamente pidiendo al >> administrador de la base de datos que inserte esos TRIGGERS, (o lo que >> fuese). Cuando me refiero a integrar quiero decir por ejemplo, integrar un >> sistema con una herramienta de inteligencia de negocios, o con un CRM. >> (Ejemplo: cuando se modifica el saldo de la tabla clientes y ese saldo >> supera un monto determinado por una regla determinada por el gerente >> comercial notificarlo vía email y generar un caso en el CRM). >> >> >> >> Espero haber sido claro! >> >> >> >> Saludos for everyone and everyone! (todos y todas en inglés...) >> >> >> >> >> >> >> >> >> >> >> >> >> [email protected] >> >> >> >> El 27 de abril de 2014, 9:03, francisco prieto <[email protected]> >> escribió: >> >> Alejandro... >> >> >> >> No hace falta que lo escuches... con que el trigger inserte el elemento >> en una tabla y vos mires constantemente dicha tabla sería suficiente. >> >> >> >> Saludos, >> >> >> >> Pancho >> >> Córdoba >> >> >> >> El 26 de abril de 2014, 23:51, César Pistiner <[email protected]> >> escribió: >> >> Buenas noches... >> >> Cual es la necesidad de capturar ese evento? No te alcanza con >> controlarlo antes o después de la llamada en tu código? >> >> Solo para comprender mas el problema. >> >> Saludos, >> César >> >> El abr 26, 2014 9:51 AM, "Alejandro Paciotti" < >> [email protected]> escribió: >> >> Un trigger en la tabla que vos quieras... pero como haces para "escuchar" >> o catchear el evento desde afuera, y con que? >> >> >> >> Gracias! >> >> >> [email protected] >> >> >> >> El 26 de abril de 2014, 9:41, francisco prieto <[email protected]> >> escribió: >> >> Ale, >> >> >> >> Eso es simplemente un Trigger... y en Sql podes crearlo sin problemas... >> gracias a ellos hice mi propia aplicacion de sincronozación entre >> servidores... >> >> >> >> Saludos, >> >> >> >> Pancho >> >> Córdoba >> >> >> >> El 25 de abril de 2014, 12:25, Alejandro Paciotti < >> [email protected]> escribió: >> >> Hola muchachos: >> >> >> >> Alguien conoce algún generador de eventos chatcheables en SQL SERVER? >> >> >> >> ¿Qué quiero decir? >> >> >> >> En este ejemplo muestran como *Catch un Firebird events >> <http://www.king-foo.be/2011/07/catch-firebird-events-with-node-js/>*, >> que básicamente lo hace a traves de un disparador luego de la inserción / >> borrado / update de un registro de una tabla. >> >> >> >> >> >> SQL> SET TERM !! ; SQL> CREATE TRIGGER NEW_MONKEY_EVENT FOR monkeys CON> >> ACTIVE CON> AFTER INSERT CON> AS CON> BEGIN CON> POST_EVENT >> 'new_monkey_created'; CON> END!! SQL> SET TERM ; !! >> >> >> >> Todavía no lo probé, porque no quiero enroscarme con FIREBIRD siendo que >> lo necesito primeramente en SQLSERVER. >> >> >> >> Si a alguien leyó, vio, o escuchó algo... agradeceré comentarios... >> >> >> >> >> >> Abrazos. >> >> >> >> >> [email protected] >> >> >> >> >> >> >> >> >> >> >> >> >> > >
