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

Může SQL Server odeslat webový požadavek?

Je to možné, ale v reálném světě je to trochu složitější než naivní přístup, který si představujete. Primárně je nepřijatelné, aby spouštěč čekal na požadavek HTTP:

  • Zaprvé, vaše aplikace se bude plazit se skřípěním, protože spouštěče budou blokovat zdroje (především zámky) čekající na odpověď nějaké vzdálené WWW služby.
  • Druhou, jemnější, ale mnohem horší, je otázka správnosti v případě vrácení zpět. Pokud se transakce, která byla odeslána na požadavky HTTP, vrátí zpět, neexistuje žádný způsob, jak „vrátit“ požadavek HTTP.

Řešením je oddělit spouštěč od požadavku HTTP pomocí fronty. Spouštěč zařadí požadavek do místní fronty a potvrdí, zatímco samostatná část zpracování tyto požadavky vyřadí z fronty a vydá požadavek HTTP. Tím jsou vyřešeny oba výše uvedené problémy. Pro fronty můžete použít běžné tabulky (viz Použití tabulek jako front) nebo můžete použít Service Broker, obojí funguje dobře.

Nyní o tom, jak vyřadit tyto požadavky z fronty a skutečně uskutečnit volání HTTP, důrazně doporučuji použít vyhrazený proces (tj. aplikaci vyhrazenou pro tento účel). I když je možné použít SQLCLR, je to velmi špatná volba. Zdroje SQL Serveru (zejména pracovníci) jsou příliš drahé na to, aby se plýtvaly čekáním na internetové odpovědi.



  1. Jak nastavit možnost maxrecursion pro CTE uvnitř funkce Table-Valued-Function

  2. Jak aktualizovat tabulku pomocí activeandroid po přidání nového sloupce

  3. Co je ekvivalentem tabulky Oracle Dual v MS SqlServer?

  4. Minimalizace dopadu rozšíření sloupce IDENTITY – část 3