Avatar billede carparknorth Nybegynder
09. september 2006 - 00:28 Der er 16 kommentarer og
2 løsninger

SQL Server 2005 Realtime Notificering

Hejsa

er det muligt at få SQL Server til at give et slags "notify" til et C#-program på fx et INSERT statement. Jeg mangler altså en slags trigger, der kan notificere mit C# program.
Avatar billede arne_v Ekspert
09. september 2006 - 01:45 #1
den pæne løsning er at lade al brug af databasen gå gennem en data komponent som
via noget subscribe/publish notificerer

den dirty løsning er at lave en trigger i C# som via remoting notificerer
Avatar billede carparknorth Nybegynder
09. september 2006 - 09:07 #2
Ok.. Jeg har nemlig overvejet det som du kalder den dirty løsning. Jeg syntes nemlig også at det er en skidt løsning.

Hvordan laver jeg sådan en data komponent og det der subscribe/publish?
Avatar billede Slettet bruger
09. september 2006 - 12:24 #3
Avatar billede arne_v Ekspert
11. september 2006 - 04:14 #4
Det kan laves på mange måder.

Det nemmeste må være at lade det gå igennem en seperat process.

Jeg er sikker på at det kan laves med DCOM, men det kender jeg ikke godt nok, så
jeg vil antage remoting. Rå sockets og web servive synes ikke at være gode
fits.

Alle kald af DAL bliver konverteret til kald af den process via remoting og
den kalder så DAL.

Et andet kald tillader registerer sig hos den process. Således at processen
kan lave et callback også via remoting.
Avatar billede carparknorth Nybegynder
11. september 2006 - 09:53 #5
Hvordan laver jeg den registrering på processen? Resten er jo rimelig nemt, men hvordan får jeg SQL Serveren til at fortælle mig, at der er sket en ændring?
Avatar billede segato Nybegynder
11. september 2006 - 12:22 #6
Hvorfor gør du ikke som kryptos beskriver? I SQL server 2005 kan du subscripe på triggers direkte på databasen.
Avatar billede segato Nybegynder
11. september 2006 - 12:24 #7
Du slipper jo ikke for din process så skal polle databsen det jo ikke særlig fint hvis man anvender jeres løsning.
Avatar billede arne_v Ekspert
11. september 2006 - 12:37 #8
Hvis alt går gennem data processen skal man da ikke polle ??
Avatar billede arne_v Ekspert
11. september 2006 - 12:38 #9
Iøvrigt så har jeg aldrig hørt om Notification service, så det kan sagtens være
en meget bedre løsning.
Avatar billede segato Nybegynder
11. september 2006 - 14:03 #10
Nej det jo klart. Så kan alle insert funktioner i DAL trigge eventet, det var jo selvfølgelig en måde at gøre det på.

Den nye SQL server har et webservice lag man kan subscribe notifications på, svarende til alm. triggers på en database. Det er ganske lækkert.
Avatar billede carparknorth Nybegynder
11. september 2006 - 14:33 #11
Nu siger du det er et webservice lag - så vidt jeg ved, så kan jeg ikke modtage et "event" realtime fra en webservice? Eller har jeg misforstået det? Så skal jeg vel bruge noget remoting?
Avatar billede segato Nybegynder
11. september 2006 - 14:53 #12
Jeg har desværre ikke fået muligheden for at arbejde med det selv, men kun læst om det. Jeg mener der er to måder man kan få triggers på. Via notification services of via managed componenter man installere på selve databasen. Og man kan godt have event på en webservice bare se asynkrone kald:

http://msdn2.microsoft.com/en-us/library/wyd0d1e5.aspx
Avatar billede segato Nybegynder
11. september 2006 - 14:57 #13
Om man kan kalde det et event er nok så meget sagt, jeg vil nok mere kalde det et callback.
Avatar billede carparknorth Nybegynder
12. september 2006 - 20:38 #14
Nu har jeg installeret Microsoft SQL Server 2005 og Micrsoft SQL Server Management Studio og kan se at jeg et objekt, der hedder Server Objects og Server Triggers. Hvordan melder jeg mit program ind her?
Avatar billede segato Nybegynder
13. september 2006 - 08:11 #15
http://www.15seconds.com/issue/041006.htm
http://www.code-magazine.com/Article.aspx?quickid=0605061

Den sidste anvender Service Brokeren og de ngår helt ned i detaljer. Du skal bruge System.Data.SqlClient.SqlDependency men det hele er beskrevet ganske fint. Jeg legde selv med detfor et års tid siden der var en opsætning på selve SQL server man skulle slå til før det virkede. Kan bare ikke lige huske hvad den hed.
Avatar billede segato Nybegynder
13. september 2006 - 08:12 #16
Når  det er også angivet i artiklen:

USE mydatabase
  ALTER DATABASE mydb SET ENABLE_BROKER
Avatar billede carparknorth Nybegynder
18. september 2006 - 22:58 #17
Ok, takker for hjælpen indtil nu. Læg et svar :)
Avatar billede segato Nybegynder
19. september 2006 - 07:48 #18
svar D
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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