Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Niezawodność SqlDependency?

1) Tak, uważam, że jest to wiarygodne, ponieważ działa poprawnie, do czego został zaprojektowany (unieważnienie pamięci podręcznej)

2) Nie. Dlatego możesz subskrybować tylko poprzez wysłanie zapytania, co zapewnia, że ​​nie ma wyścigu między pobraniem danych a powiadomieniem o nowych aktualizacjach

3) Ponowne uruchomienie bazy danych (lub instancji) sygnalizuje wszystkie oczekujące powiadomienia o zapytaniach za pomocą SqlNotificationInfo wartość Restart . Przeczytaj, jak SqlDependency i opiera się na powiadomieniu o zapytaniu dla lepszego zrozumienia. Jako SqlDependency utrzymuje otwarte połączenie z bazą danych przez cały czas, niedostępność bazy danych zostanie wykryta przez SqlDependency nawet przed jakimkolwiek wyraźnym powiadomieniem o zapytaniu

4) Nie. Więcej na ten temat niżej...

5) Nie ma „brakujących danych”. Powiadomienie o zapytaniu (a tym samym SqlDependency) nigdy nie powiadamia Cię o co dane uległy zmianie. Powiadamia tylko, że to się zmieniło . Zawsze powinieneś wrócić i przeczytać wszystko dane z powrotem, aby zobaczyć, co się zmieniło (i odsyłam do pytania/odpowiedzi nr 2). Nowo uruchomiona aplikacja nie odpytywała jeszcze o dane, więc nie ma żadnych zmian, o których trzeba by było powiadomić. Tylko po najpierw zapytał o dane, czy może otrzymać powiadomienie.

Z opisu Twojego problemu nie wynika, że ​​potrzebujesz powiadomień o zapytaniach. Wydaje mi się, że chcesz działać na każdą zmianę, bez względu na to, kiedy to się stało, nawet jeśli Twoja aplikacja nie była uruchomiona . Z pewnością nie jest to unieważnianie pamięci podręcznej, ale śledzenie zmian. Dlatego musisz wdrożyć technologię śledzenia zmian, taką jak Zmień przechwytywanie danych lub Śledzenie zmian , z których oba są tylko SQL Server 2008 i nowsze (niedostępne w SQL Server 2005). W przypadku SQL Server 2005 nie jest niczym niezwykłym wdrożenie wyzwalacza i kolejkowanie komunikatu dla Broker usług aby poradzić sobie z tym samym problemem, który próbujesz rozwiązać (wykrywaj zmiany, reaguj na każdy wiersz nowych danych).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 — kolumna obliczeniowa HashBytes

  2. Zestaw rekordów zamknięty po wykonaniu procedury przechowywanej

  3. Jak wyświetlić strukturę tabeli w zapytaniu SQL Server?

  4. Użyj IDENT_CURRENT(), aby zwrócić bieżącą wartość tożsamości w kolumnie tożsamości w SQL Server

  5. Błędnie obliczona liczba tygodni i częściowych tygodni między dwoma dniami