Avatar billede kennethv Nybegynder
18. september 2008 - 14:55 Der er 17 kommentarer og
2 løsninger

Program skal fange når en ny record er tilføjet i SQL DB.

Jeg har lavet er service som skal udføre en masse administrative opgaver i min dagligdag. Jeg har dog en lille detalje, som er, hvordan "tricker" jeg min service til at starte når en ny record er tilføjet min DB?
Avatar billede arne_v Ekspert
18. september 2008 - 15:06 #1
http://www.eksperten.dk/spm/812404 opremser nogle muligheder for SQLServer.
Avatar billede kennethv Nybegynder
18. september 2008 - 15:20 #2
Uha, min service er ikke i .NET, idet jeg ikke aner hvordan man laver det i .NET. Den SQL jeg har, er bare en EE udgave. Har den også den mulighed? Og hhvordan notify'er den mit program?
Avatar billede hrc Mester
19. september 2008 - 09:52 #3
arne: Linket er en af coladrengens spørgsmål. Den får du nok ikke points for.

Den notifikationstingest du snakker om. Det er SQL2005, ikke? Hvis det er 2000'eren skal det vist laves i C++, jvf. dette spørgsmål jeg stillede tidligere: http://www.eksperten.dk/spm/761310
Avatar billede kennethv Nybegynder
19. september 2008 - 10:24 #4
Ja, det er korrekt at det er en 2005 EE. Måske træder dette spørgsmål ud af katorien, men hvordan skulle det sættes op i SQL'en. Jeg har set at der er et område der hedder "Trigger". Kan det bruges og hvordan sætter man det op?
Avatar billede arne_v Ekspert
19. september 2008 - 10:35 #5
hrc>

Det var mine kommentarer jeg henviste til ikke spoergsmaalet i sig selv.
Avatar billede hrc Mester
19. september 2008 - 11:14 #6
arne: Det ved jeg godt. Det var bare for at referere til at Coldadrengen og hans alter alias er blevet deaktiveret her på Eksperten.
Avatar billede kennethv Nybegynder
19. september 2008 - 11:20 #7
Har I nogen ide til det eller skal spørgsmålet flyttes? Jeg har sådan en ide om, at den der "Trigger" kunne oprette en fil med indhold om hvilken record der blev oprettet, ændret og slettet. Min service kunne tjekke den fil og gøre noget udfra det.

Jeg er ikke den hel store haj, så skeer, er kodeordet. :)
Avatar billede kennethv Nybegynder
19. september 2008 - 12:00 #8
Jeg tror at jeg har fundet en anden løsning. Jeg tjekker bare i min db på et felt, fra min service. Hvis det er tomt, må det betyde at den er ny eller der er i hvertfald ikke sket noget siden den er kommet ind. Så vil jeg gøre noget ud fra det.
Avatar billede hrc Mester
19. september 2008 - 12:16 #9
Naturligvis kan du polle et felt i databasen eller lave en count(*) på records eller lignende. Det er bare ikke nogen pæn måde at lave det på, så derfor var notification service (eller hvad den hed) en meget bedre løsning.

På den anden side er målet jo det vigtigste, ikke ens søgen efter den teknisk smukkeste løsning.

Hvis du har mulighed for at oprette et felt der hedder "handled" eller lignende i tabellen, så kan din service udfylde det når recorden håndteres. Så skal selecten kun lede efter records hvor feltet ikke er udfyldt.

Ydermere, hvis du kun poller eksempelvis en gang i minuttet, kan løsningen være helt fin - og dejlig simpel.
Avatar billede arne_v Ekspert
19. september 2008 - 12:34 #10
hrc>

Det ved jeg godt.
Avatar billede arne_v Ekspert
19. september 2008 - 12:38 #11
kenneth>

Poll vil aldrig performe godt, hvis det skal bruges i stoerre stil.

Men en enkelt bruger og et rimeligt langt poll interval er naturligvsi ikke
noget problem.

I 2005 burde det ikke vaere saa svaert at lave en CLR trigger som kan sende
til din service over socket.

Det er beskerevt i:

http://msdn.microsoft.com/en-us/library/ms131093(SQL.90).aspx
Avatar billede kennethv Nybegynder
19. september 2008 - 13:33 #12
Hmm, kunne du være behjælplig med hvordan det skulle sættes op? Jeg aner ikke bjælde om det.
Avatar billede kennethv Nybegynder
19. september 2008 - 13:34 #13
Både i Delphi og SQL.
Avatar billede kennethv Nybegynder
19. september 2008 - 14:43 #14
Nu er det ikke fordi at der er mange der skal have adgang til det. Egentlig er det kun mig der laver noget idet. Det er for at lette mit arbejde i hverdagen.
Avatar billede arne_v Ekspert
19. september 2008 - 18:54 #15
Det er:

SQLServer 2005--trigger i C#--(socket)-->Delphi app

jeg taenker paa.

Jeg kan godt lave et simpelt eksempel. Men hvis du er helt blank udi emnet, saa
tvivler jeg paa at det vil hjaelpe meget.
Avatar billede arne_v Ekspert
19. september 2008 - 18:54 #16
Og til 1 service som checker hver X. minut saa er poll fint.
Avatar billede kennethv Nybegynder
22. september 2008 - 09:56 #17
Tak for jeres venlig svar. Kan I begge ligge et svar så deler jeg point. Måske mere 75% til Arne v og 25% til hrc, hvis det er iorden med jer.
Avatar billede arne_v Ekspert
22. september 2008 - 10:42 #18
svar
Avatar billede hrc Mester
22. september 2008 - 10:51 #19
OK
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
Kurser inden for grundlæggende programmering

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