sql >> Databáze >  >> RDS >> Sqlserver

Spolehlivost SqlDependency?

1) Ano, považuji to za spolehlivé, protože to dělá správně, k čemu byl navržen účel (neplatnost mezipaměti)

2) Ne. To je důvod, proč se můžete přihlásit pouze zadáním dotazu, což zajišťuje, že nedojde k žádnému závodu mezi načítáním dat a upozorněním na nové aktualizace

3) Restart databáze (nebo instance) signalizuje všechna čekající oznámení o dotazech pomocí SqlNotificationInfo hodnotu Restart . Přečtěte si, jak SqlDependency a je založeno na Query Notification pro lepší pochopení. Jako SqlDependency udržuje otevřené připojení k databázi po celou dobu, nedostupnost databáze bude detekována pomocí SqlDependency i před jakýmkoli explicitním upozorněním na dotaz

4) Ne. Více o tom níže...

5) Neexistují žádná „zmeškaná data“. Query Notification (a tedy SqlDependency) vás nikdy neupozorní na to, co údaje změněny. Pouze vás upozorní, že se změnilo . Vždy byste se měli vrátit a přečíst si vše data zpět, abyste viděli, co se změnilo (a odkazuji vás zpět na otázku/odpověď č. 2). Nově spuštěná aplikace se ještě nezeptala na data, takže není třeba upozorňovat na žádnou změnu. Teprve po nejprve se dotázal na data, zda může obdržet upozornění.

Z popisu vašeho problému nejsem přesvědčen, že potřebujete upozornění na dotazy. Zdá se mi, že chcete reagovat na jakoukoli změnu, bez ohledu na to, kdy k ní došlo, i když vaše aplikace nebyla spuštěna . To rozhodně není zneplatnění mezipaměti, je to sledování změn. Proto musíte nasadit technologii sledování změn, jako je Změnit sběr dat nebo Sledování změn , oba jsou pouze SQL Server 2008 a novější (není k dispozici v SQL Server 2005). S SQL Server 2005 není neobvyklé nasadit spouštěč a zařadit zprávu do fronty pro Zprostředkovatel služeb ke zvládnutí stejného problému, který se snažíte vyřešit (detekce změn, reakce na každý řádek nových dat).



  1. Zdá se, že bezpečnostní skupiny AWS EC2 se nevztahují na veřejné IP adresy

  2. Nejlepší postup pro navrhování uživatelských rolí a systému oprávnění?

  3. neočekávaný úspěch dotazu

  4. Chyba syntaxe SQL s podřetězcem a charindexem