Plling su tabella

lunedì 30 giugno 2008 - 15.57

cristian75 Profilo | Newbie

Ciao A tutti, sto creando una applicazione che esegue polling su una tabella per sapere quando viene inserita un riga nuvo, ne preleva alcuni dati e dopo averli convertiti in na stringa li appende ad un file di testo esistente .
Per fare questo io sto utilizzando un timer all'interno di una applicazione in c#, conoscete un modo migliore di un time ?? Non so magari intercettare l'evento " Insert Into " che avvinene sulla tabella ?? o un altro modo ?? non so perchè ma se pur funziona tutto, non mi piace motlo quel timer !!

Grazie mille

AndreaKpr Profilo | Senior Member


Se stai usando una tabella di SqlServer puoi gestirti tale problematica con i Triggers.

http://database.html.it/guide/lezione/3411/i-trigger/
http://programmazione.html.it/guide/lezione/2084/i-trigger/

Puoi anche eseguire dei tools esterni al Db.

In access non so se si possa fare.... Ciao !!!

lbenaglia Profilo | Guru

>Non so magari intercettare l'evento " Insert Into " che avvinene
>sulla tabella ??

Che DBMS utilizzi?
Bene o male ogni DBMS Server permette di definire dei TRIGGER in grado di intercettare gli eventi DML (INSERT, UPDATE, DELETE) ed alcuni DBMS anche quelli DDL (CREATExxx).

>Grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

cristian75 Profilo | Newbie

Sto utilizzando MS SQL 2005, ho già utilizzato i trigger sulle tabelle, ma non pensavo di poter andare ad interagire con una applicazione esterna con i trgger.
Avevo già postato quale era il mio problema, devo prelevare ogni singola riga che viene scritta nel momento in cui viene scritta o " molto " poco dopo, e leggendo da un file di configurazione, manipolare i dati di questa riga, fino ad ottenere una stringa formattata in un determinato modo.
dato che mi sembrava troppo lavoro per un trigger o creato una applicazione di test che esegue la select, manipola i dati e gli scrive sul file, ma attualmente lo faccio ogni 3 secondi con un timer.
Non conosco come far interagire un trigger con una applicazione esterna, qualche consiglio ????

lbenaglia Profilo | Guru

>Sto utilizzando MS SQL 2005, ho già utilizzato i trigger sulle
>tabelle, ma non pensavo di poter andare ad interagire con una
>applicazione esterna con i trgger.
Infatti non puoi, possiamo dire che i triggers sono "in process" con il DBMS Server.

>Avevo già postato quale era il mio problema, devo prelevare ogni
>singola riga che viene scritta nel momento in cui viene scritta
>o " molto " poco dopo, e leggendo da un file di configurazione,
>manipolare i dati di questa riga, fino ad ottenere una stringa
>formattata in un determinato modo.
Ah ricordo
Non potresti utilizzare un trigger per popolare una tabella di appoggio con la PK delle righe inserite, e poi da applicazione client esportare i dati come meglio credi, eliminando le righe o aggiornando a 1 una colonna (ad esempio Exported bit) della tabella di appoggio?

Scheduli la tua applicazione ogni x tempo andando a leggere tutte le righe presenti nella tabella di appoggio in JOIN con la tabella di origine (se hai deciso di eliminarle al termine di ogni esportazione) oppure quelle con il flag Exported = 0.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

cristian75 Profilo | Newbie

>Ah ricordo
Esatto mi avevi consigliato una applicazione / servizio ? e applicazione / servizio sia !

>Non potresti utilizzare un trigger per popolare una tabella di
>appoggio con la PK delle righe inserite, e poi da applicazione
>client esportare i dati come meglio credi, eliminando le righe
>o aggiornando a 1 una colonna (ad esempio Exported bit) della
>tabella di appoggio?
SI è esattamente quello che faccio adesso

>Scheduli la tua applicazione ogni x tempo andando a leggere tutte
>le righe presenti nella tabella di appoggio in JOIN con la tabella
>di origine (se hai deciso di eliminarle al termine di ogni esportazione)
>oppure quelle con il flag Exported = 0.

Non posso schedulare l'applicazione esternamente, perchè già che ci sono le faccio fare anche altre funzioni, e quindi ho la necessità che resti attiva, quindi attualmente lo faccio con un timer interno che lancia una funzione che esegue la query, e manipola i dati e li passa ad una funzione che li scrive.

Speravo he ci fosse qualche (barbatrucco) per evitare il timer, ma ho paura di no, mi limiterò dunque a diminuire la frequenza.




>Ciao!

Grazie
Ciao !

lbenaglia Profilo | Guru

>SI è esattamente quello che faccio adesso
Bene, sappi che SQL Server 2008 integrerà due nuove funzionalità proprio per questo genere di compito: Change Data Capture e Change Tracking
http://technet.microsoft.com/en-us/library/bb933994(SQL.100).aspx

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5