SQL een applicatie laten afrappen (asynchroon)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen,
We hebben hier een SQL based project management tool.
Wat wij willen is dat er een aantal extra acties worden uitgevoerd, als er bijvoorbeeld een nieuw project wordt aangemaakt.

We hebben geen mogelijkheid om in de tool zelf te gaan frunniken, dus hebben we besloten om SQL triggers te gaan gebruiken. Deze triggers roepen een tool van ons aan (via xp_cmdshell), We hebben goed gekeken naar de manieren om de boel dicht te timmeren, dus het is "voor zo ver mogelijk" veilig.
Dit werkt ook allemaal prima naar behoren.

Maar nu is het zo dat SQL wacht tot onze applicatie klaar is, en dan pas verder gaat met draaien.
Hoe kan ik het zo oplossen, dat SQL niet wacht, en hem als het ware asynchroon uitvoert.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gooi er een "start" voor :?
start myapp.exe -my -params

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20-09 21:24

voodooless

Sound is no voodoo!

Laat de trigger "actie" tabellen vullen die jullie app dan weer asynchroon kan bekijken om te zien wat ie moet doen.

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Overigens lijkt me hier ook zat tussen te staan: [google=xp_cmdshell asynchronous]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
voodooless schreef op maandag 23 januari 2012 @ 11:36:
Laat de trigger "actie" tabellen vullen die jullie app dan weer asynchroon kan bekijken om te zien wat ie moet doen.
Dat was inderdaad ook een optie waar ik aan zat te denken. Maar ik vroeg me af of het dus rechtstreeks mogelijk is om een applicatie synschroon aan te roepen.
RobIII schreef op maandag 23 januari 2012 @ 11:15:
Gooi er een "start" voor :?
start myapp.exe -my -params
Ik heb nu (ongeveer):

SQL:
1
2
3
SET @cmd = 'D:\Applicatie.exe '

EXEC xp_cmdshell @cmd

Waar moet ik die start dan kwijt? ik kan dat zo 1-2-3 via google niet vinden.

[ Voor 32% gewijzigd door Armageddon_2k op 23-01-2012 14:17 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Armageddon_2k schreef op maandag 23 januari 2012 @ 14:15:
Waar moet ik die start dan kwijt? ik kan dat zo 1-2-3 via google niet vinden.
Doe eens gek en zet 't voor D:\ in je @Cmd :?
SQL:
1
SET @cmd = 'Start D:\Applicatie.exe ' 

Start is gewoon een windows command.

Ik weet niet of xp_cmdshell dat ondersteund overigens, maar ik heb je ook nog een google-link gegeven die -tig alternatieven biedt.

Je moet wel opletten dat je applicatie geen race-conditions e.d. gaat veroorzaken; misschien dat je dus een single-instance moet gaan afdwingen etc. Dan is werken met een tabel waarin je een 'queue' bouwt misschien wel beter; het hangt er ook van af hoe lang je applicatie werk heeft, of 't kwaad kan als er 2 (of meer) gelijktijdig draaien en hoe 'real-time' je de app wil laten draaien. Als je kunt volstaan met een poll van 30 seconden of een minuut ofzo kun je beter de 'queue tabel' methode gebruiken.

[ Voor 49% gewijzigd door RobIII op 23-01-2012 15:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
RobIII schreef op maandag 23 januari 2012 @ 15:23:
[...]

Doe eens gek en zet 't voor D:\ in je @Cmd :?
SQL:
1
SET @cmd = 'Start D:\Applicatie.exe ' 

Start is gewoon een windows command.
|:( |:(
Sorry.... Ik was aan het zoeken naar een SQL command.

Verdere race conditions ed. komen niet voor. er worden enkel een aantal mappen her en der gekopieerd.
En aangezien de triggers alleen unieke projecten aanmaken, zijn de mappen ook uniek.

[ Voor 17% gewijzigd door Armageddon_2k op 23-01-2012 15:51 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Hmmm.... Weet je dat zeker? *Denkt aan transacties en momenten waarop die committen, maar vooral aan de extern aangeroepen applicatie die niet te rollback-en valt...*

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1