sql >> Database >  >> RDS >> Sqlserver

SqlDependency Betrouwbaarheid?

1) Ja, ik beschouw het als betrouwbaar omdat het het doel correct doet (cache ongeldig maken)

2) Nee. Dit is de reden waarom u zich alleen kunt abonneren door een query uit te voeren, dit zorgt ervoor dat er geen race is tussen het ophalen van de gegevens en het melden van nieuwe updates

3) Herstart van database (of instantie) signaleert alle openstaande querymeldingen met een SqlNotificationInfo waarde van Restart . Lees hoe SqlDependency en is gebaseerd op Query Notification voor een beter begrip. Als SqlDependency houdt de hele tijd een open verbinding met de database, een onbeschikbaarheid van de database wordt gedetecteerd door SqlDependency zelfs vóór een expliciete vraagmelding

4) Nee. Meer hierover verderop...

5) Er is geen 'gemiste gegevens'. Query-melding (en dus SqlDependency) laat u nooit weten over wat gegevens gewijzigd. Het meldt u alleen dat het is gewijzigd . Het is altijd de bedoeling dat je teruggaat en alles leest de gegevens terug om te zien wat er is veranderd (en ik verwijs u terug naar vraag/antwoord nr. 2). Een nieuw gestarte applicatie had om te beginnen de gegevens nog niet opgevraagd, dus er is geen verandering om van op de hoogte te worden gesteld. Alleen na het heeft eerst de gegevens opgevraagd of het een melding kan ontvangen.

Uit de beschrijving van uw probleem ben ik er niet van overtuigd dat u meldingsverzoeken nodig heeft. Het lijkt mij dat u elke wijziging wilt doorvoeren, ongeacht wanneer deze is gebeurd, zelfs als uw toepassing niet actief was . Dit is zeker geen cache-invalidatie, het is het bijhouden van wijzigingen. Daarom moet u een technologie voor het bijhouden van wijzigingen implementeren, zoals Gegevens vastleggen wijzigen of Change Tracking , die beide alleen SQL Server 2008 en later zijn (niet beschikbaar in SQL Server 2005). Met SQL Server 2005 is het niet ongebruikelijk om een ​​trigger te implementeren en een bericht in de wachtrij te plaatsen voor Servicemakelaar om hetzelfde probleem aan te pakken dat u probeert aan te pakken (detectie van wijzigingen, reageren op elke rij met nieuwe gegevens).



  1. Gegevens weergeven vanuit MYSQL; Fout in SQL-instructie

  2. sql-query om de fiscale maand dynamisch toe te voegen met behulp van pivot

  3. SQL-query om verschillende waarden van alle kolomwaarden in een tabel te krijgen

  4. mysql - kan ik opvragen hoeveel connect_errors een bepaalde host heeft gegeven?