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