Avatar billede eldaria Nybegynder
15. marts 2005 - 21:38 Der er 25 kommentarer og
2 løsninger

SQL server skal lave et http request.

Hvordan kan man få MS SQL server til at lave en http request ud?

Jeg skal på en eller anden måde få en SQL server til at sende et HTTP request til en side baseret på noget i en tabel, det skal helst ske så snart at der er opdateret i tabellen.
Man kan også droppe tabellen, da det meste sker i en Stored procedure, så om man kan lave det derfra så er det jo bedre.

Lige nu de enste løsning jeg kan komme i tanke om er at have et program kørende der tjekker tabellen ind imellem, for om der er noget nyt, og hive det ud og så lave en http request.

Det er dog ikke en særlig god løsning da det kræver ekstern kode.

Er der en mulighed at lave det internt i databasen, hvis ja, hvordan, og hvis nej, har i en ide til hvordan man så kan lave det?

Mvh.
Brian.
Avatar billede eldaria Nybegynder
15. marts 2005 - 21:38 #1
Det skal lige nævnes at det kan omhandle flere hundrede request per minut.
Avatar billede muddi Praktikant
15. marts 2005 - 21:42 #2
Jeg forstår ikke dit spørgsmål, men du skal nok bruge en trigger der udføres ved updates. Du kan læse mere om triggers her
http://msdn.microsoft.com/msdnmag/issues/03/12/DataPoints/default.aspx

Prøv ellers at søge på msdn, for der findes sikkert noget der som du kan bruge.
Avatar billede arne_v Ekspert
15. marts 2005 - 21:44 #3
det lyder som ern forfærdelig kludge løsning.

Men hvis I vil så:

xp_cmdshell til at udføre komandoer med + wget utility til at sende HTTP requests med

(eller vent på SQLServer 2005)
Avatar billede muddi Praktikant
15. marts 2005 - 21:45 #4
Men der er nok en del overhead forbundet med den løsning du har sat dig for. Hvorfor skal din SQL Server i øvrigt lave et http-request?
Avatar billede eldaria Nybegynder
15. marts 2005 - 21:57 #5
Hehe, ok lidt forklaring til vad der skal ske.

Det er en service udbydere, der har en service, Jeg kan desværre ikke nævne hvad de skal gøre, da det går under tavshedspligt.

Denne service udbydere bruger et HTTP in HTTP out interface hvori de laver et http request til hvores web server. En ASP side hånterer requestet som så bliver sent til SQL serveren, vores SQL serveren behandler så dataeren, det kan være en søgning i databasen eller lignende, den del er lavet.
Men så skal jeg så sende informationerne tilbage til service udbyderen, heri kommer mit problem,
Udbyderen kræver at daterne kommer tilbage igennem et http request til deres web server.
Med http request så mener jeg et URL.

mvh.
Brian
Avatar billede arne_v Ekspert
15. marts 2005 - 22:01 #6
Hvorfor ikke lave det som:

de sender HTTP request til din ASP side
den ASP side gemmer i database + sender HTTP request til dem

?
Avatar billede eldaria Nybegynder
15. marts 2005 - 22:08 #7
øøøøh kan man det? hehe, det viste jeg ikke at man ku?
Avatar billede arne_v Ekspert
15. marts 2005 - 22:12 #8
Det er betydeligt nemmere (og mindre resource krævende !) at sende den HTTP request
fra din ASP side end fra SQLServer
Avatar billede eldaria Nybegynder
15. marts 2005 - 22:52 #9
ok, vilket asp commando laver man for at lave et http request?

Hov, det er ikke sikkert at det kan gøres.
Det er ikke altid at requestet starter fra udbyderen.
Der er en sp der kører per interval, og der kan der være nogle gange at det starter requestet fra SQL serveren og ikke fra asp siden.
Kan man så stadig lave det? Eller hvordan laver man det så?
Avatar billede arne_v Ekspert
15. marts 2005 - 23:03 #10
Du skal bruge en komponent.

XMLHTTP
WINHTTP
m.v.
Avatar billede arne_v Ekspert
15. marts 2005 - 23:04 #11
Hvad starter den stored procedure ?
Avatar billede eldaria Nybegynder
15. marts 2005 - 23:18 #12
Ah, en specifik component.
Jeg kom ellers også i tanke om server.transfer eller server.execute muligtvis kunne bruges.

Scheduler indbygget i sql serveren starter den sp der skal køre per interval.
Avatar billede arne_v Ekspert
15. marts 2005 - 23:20 #13
Hm.

Den må også kunne starte en ekstern utility som f.eks. wget
Avatar billede eldaria Nybegynder
15. marts 2005 - 23:48 #14
Ja man kan godt starte applicationer, har dog ikke prøvet det.
Men wget, det kender jeg ikke, google siger at det er et program til at hente filer.

Det kan jo eventuelt bruges, til den del der kører på interval, hvori asp siden kan lave alt det andet.

Kan man forreten gøre det med en server.execute eller kan den kun lave lokale ting, eller kan man sende en server.execute til en anden server?
ok, jeg kan se at det sidst spsm, ikke hører til i denne kategori, jeg kan eventuelt smide den i den korrekte kategori. :-)
Avatar billede arne_v Ekspert
15. marts 2005 - 23:56 #15
wget kan kalde URL'er (og gemme response som fil)
Avatar billede arne_v Ekspert
15. marts 2005 - 23:56 #16
server.execute er så vidt jeg ved kun lokalt
Avatar billede eldaria Nybegynder
16. marts 2005 - 00:04 #17
kan wget så også hente det den skal bruge fra databasen?

Ellers kan man vel løse det ved at wget henter en asp side på webserveren der så henter informationerne fra databasen. men det lyder lidt som om man kommer tilbage til en overhead løsning. Men kan også være at det er den eneste løsning. :-(
Avatar billede janus_007 Nybegynder
16. marts 2005 - 00:14 #18
Ved en request henter du noget, på den måde kan du jo ikke sende noget afsted! Du kan ikke sende noget igennem en url, men altså kun requeste noget og derved lave en response. Jeg tror du måske mener at udbyderen laver en request og du skal så sende et svar afsted :O)

Anyway...

Hvis jeg var dig ville jeg kigge lidt på sp_makewebtask http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_ma-mz_2p0r.asp som findes i SQL2000 og evt. også URL Access - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlref/xmlref_7583.asp
Avatar billede eldaria Nybegynder
16. marts 2005 - 00:29 #19
janus, jeg skal ikke i den stil sende en hel masse data.
Det er bare en kort string, og det kan man godt sende igennem en url.

http://server/side.asp?data=Der%20var%20en%20gang%20noget%20data

Nu har jeg lavet en request til serveren, og i den request har jeg sendt noget data til serveren.

Det er det jeg skal have serveren til at generere og sende til webserveren fra service udbyderen.
Avatar billede arne_v Ekspert
16. marts 2005 - 07:16 #20
Hvis du både skal hente fra databasen og sende så skal du nok droppe
wget og lave et lille program selv.

Hvis du har mulighed for C# eller VB.NET så er det utroligt simpelt at lave.
Avatar billede arne_v Ekspert
16. marts 2005 - 07:17 #21
wget kan kun lave GET med parametre

et eget program kan både lave GET og POST
Avatar billede ldanielsen Nybegynder
16. marts 2005 - 09:24 #22
Jeg ville lave en DTS pakke, og deri lave en activex task skrevet i VBScript, der laver request'ene med WinHttp
Avatar billede eldaria Nybegynder
16. marts 2005 - 10:12 #23
Jo, jeg regnde med at jeg skulle lave et program.
Men jeg laver nok et program i vb som så sql scheduler kører der kan gå ind og tjekke databasen, og lave en URL request hvis der er noget at lave.
Men den skal i det minste ikke lave ligså meget som jeg først havde troet, den med at asp siden kan lave det meste er god, og den vil jeg bruge.

Men jeg skal bruge et svar, ellers kan jeg ikke lukke. :-)

mvh.
Brian.
Avatar billede janus_007 Nybegynder
16. marts 2005 - 12:21 #24
Du kan få et svar herfra mig, hvis du mener jeg skal have..

Anyway, som jeg var inde på før så er det vigtigt at du sætter dig ind i requests og response, det kan hurtigt blive forvirrende hvis begreberne i spørgsmålet ikke er på plads.
Avatar billede eldaria Nybegynder
16. marts 2005 - 14:50 #25
Det er vist nok Arne der har svaret på det spsm jeg stillede. :-)
Avatar billede arne_v Ekspert
16. marts 2005 - 17:14 #26
så ligger jeg et svar
Avatar billede eldaria Nybegynder
16. marts 2005 - 17:32 #27
ok, Arne får 60 points.
Og jeg lagede 30 points til Janus.
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