Welcome to Sign in | Help
in Search

t-sql asyncron sql server 2005

Last post 09-16-2009, 2:34 PM by Alex. 8 replies.
Sort Posts: Previous Next
  •  09-08-2009, 4:17 PM 7576

    t-sql asyncron sql server 2005

    salut, imi puteti spune va rog care sunt variantele ca sa pot executa stfel o procedura in sql server 2005...ce anume as putea folosi sau ce anume trebuie setat

    sa spunem ca am procedura stocata X care in interiorul ei executa procedura stocata Y. as vrea ca procedura X sa nu astepte dupa procedura Y sa termine ca sa dea raspuns ca a terminat....procedura Y sa ruleze sub o alta sesiune (ceva de genul), iar daca dupa un anumit timp incerc sa execut iar procedura X si procedura Y inca nu a terminat sa primesc raspuns ca inca se mai ruleaza, sa nu pot rula procedura X decat daca procedura Y a terminat

    sau altfel

    dintr-o aplicatie web sa zicem una de rapoarte...rulez procedura X care intoarce date pt un anumit raport si eu pe urma inchid browserul inainte ca procedura X sa se fi terminat, aceasta sa nu se opreasca din rulat ci sa ruleze in background....astfel incat daca intru iar in aplicatia web si incerc sa rulez raportul care executa procedura X sa primesc raspuns ca datele nu sunt inca generate pt vizualizarea raportuluisi ca procedura inca ruleaza

    procedura X nu face altceva decat sa verifice daca procedura Y a terminat sau nu....daca a terminat intoarce rezultatele procesate de Y daca nu da mesaj ca datele nu sunt procesate sau ca procedura Y inca mai ruleaza...deci intrebarea este cu pornesc in executie o procedura Y din interiorul procedurii X dar intr-o alta sesiune/conexiune

    folosesc reporting services si sunt proceduri care ruleaza si cateva ore....si din acest motiv daca utilizatorul inchide browserul si intra mai tarziu nu poate vizualiza raportul

     

    multumesc

    alex.

  •  09-08-2009, 10:58 PM 7578 in reply to 7576

    Re: t-sql asyncron sql server 2005

    Asynchronous procedure execution: http://rusanu.com/2009/08/05/asynchronous-procedure-execution/
    http://rusanu.com
  •  09-11-2009, 10:38 AM 7599 in reply to 7578

    Re: t-sql asyncron sql server 2005

    am incercat sa testez exact ce scrie acolo...pas cu pas dar nu-mi dau seama care este rezultatul...nu stiu mai deloc despre Service Broker, dar este exact ce-mi trebuie mie se pare, exemplul dat de tine se potriveste perfect cu problema mea...doar ca nu-mi dau seama cum functioneaza si cum pot testa ca functioneaza

    o alta intrebare este:de ce in procedura usp_AsyncExecInvoke care baga in tabela [AsyncExecResults] nu am insert decat pe primele 2 coloane nu si pe start_time, finishtime?

    multumesc

    alex.

  •  09-11-2009, 7:33 PM 7600 in reply to 7599

    Re: t-sql asyncron sql server 2005

    Service Broker include o facilitate numita Activation, pe care se bazeaza exemplul din blog-ul meu. Activation lanseaza o in executie o procedura cind exista mesaje intr-un queue care pot fi citite. Procedura este lansat in executie fara sa exista o conexiune, intr-o sesiune de tip special ('background'). In exemplul din blog cind procedura de invocare ( usp_AsyncExecInvoke) plaseaza un mesaj intr-un queue care are atasat o procedure de activare (usp_AsyncExecActivated). Cind procedura de invocare a comite transactia, Service Broker lanseaza in executia procedura activata. Aceasta citeste mesajul din queue si executa procedura care doresti tu sa o lansezi.

    Tabela de AsyncExecResults contine ce proceduri doresti tu sa lansezi si ce rezultat au obtinut. Procedura de invocare nu executa nimic, deci nu are cum sa stie despre start time si finish time. Procedura activata este cea care executa, si ea updateaza cu start time, finish time si eventual un mesaj de eroare daca este cazul.

    Iti recomand sa citesti topicul din MSDN http://msdn.microsoft.com/en-us/library/ms171617.aspx si cele trei sub-topicuri (Understanding when activation occurs, Internal activation context si Event based activation) ca sa intelegi mai multe detalii despre cum functioneaza Activation.
    http://rusanu.com
  •  09-14-2009, 5:23 PM 7605 in reply to 7600

    Re: t-sql asyncron sql server 2005

    de ce daca fac un alter pe procedura

    usp_procedureInvokeHelper

    cu

    insert into nume_tabela select getdate(), @stmt

    ramane un mesaj pe coada si nu mai functioneaza nimic?

    alex.

  •  09-14-2009, 8:15 PM 7606 in reply to 7605

    Re: t-sql asyncron sql server 2005

    Troubleshooting Activation Stored Procedures: http://msdn.microsoft.com/en-us/library/ms166102.aspx
    http://rusanu.com
  •  09-15-2009, 2:06 PM 7611 in reply to 7606

    Re: t-sql asyncron sql server 2005

    mai am o intrebare te rog....in tabela AsyncExecResults imi completeaza start_time,finish_time dar nu-mi dau seama de ce-mi baga si error_number = "102" si error_message = "Incorrect syntax near '='." .... defapt nu reusesc sa-mi dau seama de unde provine eroarea asta..din care procedura?

    multumesc

    alex

  •  09-15-2009, 5:59 PM 7612 in reply to 7611

    Re: t-sql asyncron sql server 2005

    Din procedura de executie. Vezi ca ea face exec sp_executesql intr-un bloc try-catch. Orice eroare prinsa acolo este inserata in table de rezultate. Daca tu ai o eroare de syntaxa (102) singurul loc unde aceasta eroare poate sa se intimple este in textul SQL care se executa cu sp_executesql. Daca eroarea de syntaxa ar fi oricunde altundeva, cu o erorare de syntaxa in usp_AsyncExeActivated procedura nici nu ar putea fi creata.

    Ca sa faci debugging-ul mai usor poti incerca urmatoarea varianta: desactiveaza Activation cu ALTER QUEUE ... WITH ACTIVATION (STATUS = OFF); In felul acesta cind trimiti un mesaj, doar ramine in queue si nu este procesat. Dupa ce apelezi procedura de invocare, poti rula 'manual' procedura activata (pur si simplu exec usp_AsyncExecActivated)  din Management Studio si poti face step-by-step execution ca sa te prinzi ce nu merge. Sau poti adauga PRINT-uri si sa vezi ce executi. Dar fii foarte atent sa le scoti toate PRINT-urile adaugate innainte de a re-activa activation. Pentru ca in contexul de Activation nu exista un 'client' connectat la care sa se trimita textul din PRINT atunci acesta este trimis in ERRORLOG si-tzi va umple errorlog-ul. Odata ce ai rezolvat problema, poti seta la loc Activation cu ALTER QUEUE [AsyncExecQueue] WITH ACTIVATION (STATUS = ON);

    http://rusanu.com
  •  09-16-2009, 2:34 PM 7613 in reply to 7612

    Re: t-sql asyncron sql server 2005

    am gasit de unde eroarea, multumesc

    parametrul procedurii mele nu era @pt1 ci @DataFinala

    si el facea @stmt cu exec procedura_mea @pt1 = '20090901' si procedura_mea avea parametru de intrare @DataFinala

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems