Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Надеждност на SqlDependency?

1) Да, смятам го за надежден, тъй като прави правилно целта, за която е проектирана (невалидност на кеша)

2) Не. Ето защо можете да се абонирате само чрез изпращане на заявка, това гарантира, че няма надпревара между извличането на данните и уведомяването за нови актуализации

3) Рестартирането на база данни (или екземпляр) сигнализира за всички чакащи известия за заявки с SqlNotificationInfo стойност на Restart . Прочетете как SqlDependency и се основава на известие за заявка за по-добро разбиране. Като SqlDependency поддържа отворена връзка с базата данни през цялото време, липсата на база данни ще бъде открита от SqlDependency дори преди всяко изрично известие за заявка

4) Не. Повече за това по-долу...

5) Няма „пропуснати данни“. Известието за заявка (и следователно SqlDependency) никога не ви уведомява за какво данните са променени. Само ви уведомява, че се е променило . Винаги трябва да се върнете и да прочетете всичко данните обратно, за да видите какво се е променило (и ви препращам обратно към въпрос/отговор № 2). Новозапочнато приложение все още не е поискало данните в началото, така че няма промяна, за която да бъдете уведомени. Само след първо е потърсил данните, може ли да получи известие.

От описанието на вашия проблем не съм убеден, че имате нужда от известия за заявки. Струва ми се, че искате да предприемете действия при всяка промяна, без значение кога се е случила, дори приложението ви да не работи . Това със сигурност не е обезсилване на кеша, а проследяване на промените. Следователно трябва да внедрите технология за проследяване на промените, като Промяна на улавянето на данни или Проследяване на промени , като и двете са само SQL Server 2008 и по-нови (не са налични в SQL Server 2005). При SQL Server 2005 не е необичайно да се разположи тригер и да се постави на опашка съобщение за Посредник на услуги за справяне със същия проблем, с който се опитвате да се справите (откриване на промени, реагиране на всеки ред нови данни).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматично изтриване на дата/час на MSSQL запис

  2. Защо SQL Server не третира този код като непостоянен?

  3. Създаване на локална база данни на SQL Server

  4. Получаване на данни от съхранена процедура с Entity Framework

  5. Настройката на SMO ConnectionContext.StatementTimeout се игнорира