Avatar billede mikaelduus Nybegynder
08. maj 2007 - 11:42 Der er 4 kommentarer

Kalde stored procedures asynkront (flere på én gang)

Hej,

Jeg har en stored procedure, der kalder nogle underliggende procedurer. Jeg skal have dem til at køre asynkront (flere på én gang). Er der nogen der kan hjælpe med det? -jeg har lavet et lille eksempel for overskuelighedens skyld :o)

EKSEMPEL:

Procedure, der kalder de underliggende procedurer:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KaldInsert]
AS
BEGIN
    SET NOCOUNT ON;
    truncate table dbo.TableTest
    execute('InsertRow1')
    execute('InsertRow2')
    execute('InsertRow3')
END


Underliggende procedure InsertRow1, der bliver kaldt af KaldInsert:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertRow1]
    @p1 int = 1
AS
BEGIN
    SET NOCOUNT ON;
    insert into TableTest (test, tid)
    values (@p1, current_timestamp)
    waitfor delay '00:00:05'
    insert into TableTest (test, tid)
    values (@p1, current_timestamp)
END

(InsertRow2 og InsertRow3 ligner 1'eren)


SQL til at lave TableTest:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TableTest](
    [test] [int] NOT NULL,
    [tid] [datetime] NOT NULL
) ON [PRIMARY]
Avatar billede editone Nybegynder
08. maj 2007 - 12:13 #1
Hmm hvad er formålet med det du vil lave forstår det ikke helt :S
Avatar billede mikaelduus Nybegynder
08. maj 2007 - 12:21 #2
Det er at jeg er ved at lave en database der skal køre driftovervågning. Den skal starte programmer, og logge returkoder, sende mails + en del andet... For at maksimere serverload skal jeg gerne kunne køre flere job på én gang. Jeg har prøvet flere forskellige ting -bl.a. at kalde den samme stored procedure med forskellige parametre i et loop, men der er ikke rigtigt noget der synes at lykkedes. Eksemplet er MEGET simplificeret, men mere for at beskrive problemstillingen at jeg skal have en stored procedure der kører flere jobs på én gang der alle ender med at skrive ned i en tabel (sluttid, returkode, osv...) :o)
Avatar billede arne_v Ekspert
09. maj 2007 - 02:04 #3
Jeg tror ikke at du kan køre en SP asynkront.

Men du kan starte en stribe SP'er parallelt fra BAT fil (OSQL) eller et program (C#/Java/whatever).
Avatar billede editone Nybegynder
09. maj 2007 - 15:44 #4
Er enig med Arne V her jeg mener heller ikke det kan lade sig gøre og jeg kan heller ikke se formålet.. hvad betyder det for driftovervågningen at alle tingene er tjekket smatidigt?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester