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