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]
>
>
>
>
>
>
>
>
>
>
>
>
>

Responder a