Welcome to Sign in | Help
in Search

SQL Express Trigger

Last post 02-04-2009, 9:09 AM by crestinul. 8 replies.
Sort Posts: Previous Next
  •  02-01-2009, 8:41 PM 6659

    SQL Express Trigger

     Salut.

    Am facut un trigger pe SSX.

    USE DB1;
    GO
    CREATE TRIGGER modifica_stoc ON MyStocDB
    AFTER UPDATE
    AS
    print 'S-a modificat stocul'
    GO
     

    Am si o tabela in care memorez IP-ul fiecarui user care foloseste aplicatia mea facuta in VFP.

    Cum pot sa trimit tuturor user-ilor acest mesaj ? Vreau ca pe statiile din retea sa captez cumva acest mesaj .

    Va rog sa nu imi spuneti de net send si de dll-ul de la www.atvsoftware.com pentru ca sint nefolositoare deoarece nu functioneaza in retele cu routere.

    Ma puteti ajuta ?

     

     

     
  •  02-02-2009, 9:52 AM 6660 in reply to 6659

    Re: SQL Express Trigger

    Eu aş avea vre-o 2 idei. Prima ar fi (aşa cum aş proceda eu) să folosesc o procedura stocata care să realizeze insert-ul şi dacă acesta este realizat cu succes, procedura să intoarcă mesajul respectiv către aplicaţia client.

    begin try
        codul din procedura (insert-ul)
        select 'S-a modificat stocul'
    end try
    begin catch
        select 'Eroare, stocul nu a putut fi modificat !'
    end catch

    O a 2-a metodă la care mă gândesc ar fi cu service broker dar cred că prima este mai bună.

    Cătălin D.
  •  02-02-2009, 9:58 AM 6661 in reply to 6659

    Re: SQL Express Trigger

    tomcat29:
     Salut.

    Am si o tabela in care memorez IP-ul fiecarui user care foloseste aplicatia mea facuta in VFP.

    Cum pot sa trimit tuturor user-ilor acest mesaj ? Vreau ca pe statiile din retea sa captez cumva acest mesaj .


    Mesajul respectiv il poti pune intr-o tabela, cu data respectiva.
    La x minute aplicatia ta in VFP se conecteaza la tabela ( nu stiu daca exista thread in VFP, dar ar fi bun...) si vede daca data ultimului mesaj > data din memoria aplicatiei. Daca da, data din memoria aplicatiei = data ultimului mesaj si afiseaza mesajul ...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  02-02-2009, 10:07 AM 6662 in reply to 6659

    Re: SQL Express Trigger

  •  02-02-2009, 10:07 PM 6670 in reply to 6662

    Re: SQL Express Trigger

    Va multumesc tuturor pentru raspunsuri !

    Incerc sa folosesc MSMQ pentru a trimite mesaje.Am gasit aici : http://www.codeproject.com/KB/database/SqlMSMQ.aspx un exemplu interesant. Am facut cred ca tot ce scria acolo (de fapt am executat scriptul,am schimbat numele bazei de date si calea catre SqlMSMQ.dll).Scriptul se executa corect,dar cind incerc sa execut functia uspMSMQSend primesc urmatoarul mesaj de eroare :

    Msg 6522, Level 16, State 1, Procedure uspMSMQSend, Line 0
    A .NET Framework error occurred during execution of user-defined routine or aggregate "uspMSMQSend":
    System.Messaging.MessageQueueException: Invalid queue path name.
    System.Messaging.MessageQueueException:
    at System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath(String queuePath, Boolean throwException)
    at System.Messaging.MessageQueue.get_FormatName()
    at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
    at System.Messaging.MessageQueue.Send(Object obj)
    at WJeziorczak.Sql.SqlMSMQ.Send(SqlString queue, SqlString msg)

    Ma poate ajuta cineva ?

     

  •  02-03-2009, 3:56 PM 6680 in reply to 6670

    Re: SQL Express Trigger

    Se pare ca nu ai creat coada, sau nu are acelasi nume cu cea apelata din sql server.

    Verifica asta si spune-mi rezultatul.

  •  02-03-2009, 6:51 PM 6681 in reply to 6680

    Re: SQL Express Trigger

    O alta varianta ar fi sa trimiti un mesaj de informare catre client.

    Poti face astfel

    1) Iti definesti propriul mesaj de informar folosind sp_addmessage

    de ex sp_addmessage @msgnum=7000,@severiy=10,@msgtext='mesaj client'

    In trigger in loc de select pui raiseerror(7000,--messageid,10--severity tb sa fie pana in zece mesaj de infoirmare nu eroare,1--state)

    depinde de ce metoda/provider de acces la date folosesti tu pe client pentru a receptiona/,anevra acest ,esaj.

    In ado.net folosind sqlclient provider obiectul sqlconnection are handlerul de eveniment.l InfoMessage .

    Nu stiu cum se face in vfp acces la date din ce imi aduc eu aminte era remote view dar care are in spate odbc nu sqlprovider


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  02-03-2009, 9:33 PM 6686 in reply to 6680

    Re: SQL Express Trigger

    Pentru domnul  liviu.costea :

       Precizez ca sint la inceput cu SQL Server si nu stiu sa creez coada despre care vorbiti.Eu doar am executat scriptul.Acesta a fost executat cu succes, iar la apelarea functiei: EXEC uspMSMQSend 'lap101\private$\iris_anls_order', '<MESSAGE>Mr. Watson, come here, I need you</MESSAGE>' primesc eroarea de mai sus.

       Cum pot sa creez coada ?

    Pentru domnul  crestinul  :

    sp_addmessage @msgnum=70000,@severity=10,@msgtext='mesaj client ',@replace ='replace'

    Acum triggerul meu arata asa :

    USE DB1;
    GO
    CREATE TRIGGER modifica_stoc ON MyStocDB
    AFTER INSERT
    AS
    DECLARE @msgtext nvarchar(1024)
    raiserror(70000,@msgtext,10,1) with log
    GO
     

    Cind execut comanda :

    insert MyStocDB(column_stoc) Values ('55'primesc intr-adevar mesajul "mesaj client" si "(1 row(s) affected)".

    Ma intreb daca totusi este corect si acel mesaj se trimite la toate PC-urile din retea (desi nu cred ca se trimite) sau trebuie sa mai fac ceva....

    Daca se poate va mai cer putin ajutor pentru a rezolva aceasta problema. Va multumesc !

     
  •  02-04-2009, 9:09 AM 6689 in reply to 6686

    Re: SQL Express Trigger

    Mesajul se va trimite tutoror conexiunilor ce apeleaza acest trigger.

    Pentru ca pe client sa beneficiezi de evenimentul de notificare trebuie sa folosesti ca provider de date sqlclient pt a avea acces la noile facilitatile ale sql2005,in speta la acel eveniment de notificare pentru mesajele de informare vizavi de conexiunea curenta

    E important ce metoda de acces la date folosesti din aplicatia ta,fiind vfp inclin sa crd ca folosesti odbc sau cel mult oledb.Din oledb poti folosi ca si provider de acces la date sqlclient ,nu stiu cum e din odbc ...


    Secolul XXI ori va fi religios ori nu va fi deloc
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems