Språk

Aktivera frågemeddelanden

Om du vill använda frågemeddelanden konfigurerar du databasen så att den stöder dem och ger databasanvändaren de behörigheter som krävs.

Om du vill använda frågemeddelanden måste du:

  • Aktivera frågemeddelanden för databasen.

  • Kontrollera att användar-ID:t som används för att ansluta till databasen har nödvändiga behörigheter.

  • Använd SqlCommand för att köra en giltig SELECT instruktion med ett associerat SqlDependency eller SqlNotificationRequest objekt.

  • Ange kod för att bearbeta meddelandet om de data som övervakas ändras.

Krav för frågemeddelanden

Frågemeddelanden stöds endast för SELECT satser som uppfyller en lista med specifika krav. Följande tabell innehåller länkar till dokumentationen för Service Broker och Query Notifications i SQL Server-dokumenten.

Dokumentation om SQL Server

Aktivera frågemeddelanden för att köra exempelkod

Om du vill aktivera Service Broker för AdventureWorks databasen med hjälp av SQL Server Management Studio kör du följande Transact-SQL-instruktion:

ALTER DATABASE AdventureWorks SET ENABLE_BROKER;

För att frågemeddelandeexemplen ska köras korrekt måste följande Transact-SQL-instruktioner köras på databasservern.

CREATE QUEUE ContactChangeMessages;

CREATE SERVICE ContactChangeNotifications
  ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);

Behörigheter för frågemeddelanden

Bevilja databashuvudobjektet SUBSCRIBE QUERY NOTIFICATIONS och de Service Broker-behörigheter som krävs för din kökonfiguration. Ersätt till exempel platshållaren med en befintlig databasanvändare:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [<database_user>];

Moderna .NET stöder inte Code Access Security. Använd SqlClientPermission.Demand inte för att auktorisera frågemeddelanden. Konfigurera databasbehörigheter i stället.

Välja ett meddelandeobjekt

Stöd för frågeaviseringar tillhandahåller två objekt för att bearbeta aviseringar: SqlDependency och SqlNotificationRequest. Använd SqlDependency för att ta emot ändringshändelser och ogiltigförklara programmets cacheminne. Använd SqlNotificationRequest när du behöver implementera din egen meddelandelyssnare.

Important

Använd inte System.Data.SqlClient för ny utveckling. Använd Microsoft.Data.SqlClient i stället. Klassen ASP.NET Framework SqlCacheDependency kräver System.Data.SqlClient och integrerar inte med Microsoft.Data.SqlClient. För nya Microsoft. Data.SqlClient-program, hantera SqlDependency.OnChange och uppdatera cachen via programmets cache-API.

Använda SqlDependency

Om du vill använda SqlDependencymåste Service Broker vara aktiverat för SQL Server-databasen som används och användarna måste ha behörighet att ta emot meddelanden. Service Broker-objekt, till exempel meddelandekön, är fördefinierade.

Dessutom SqlDependency startar automatiskt en arbetstråd för att bearbeta meddelanden när de publiceras i kön. Det parsar även Service Broker-meddelandet och exponerar informationen som händelseargumentdata. SqlDependency måste initieras genom att anropa Start metoden för att upprätta ett beroende till databasen. Det här är en statisk metod som bara behöver anropas en gång under programinitieringen för varje databasanslutning som krävs. Metoden Stop ska anropas vid programavslut för varje beroendeanslutning som har upprättats.

Använda SqlNotificationRequest

Däremot SqlNotificationRequest måste du implementera hela lyssnarinfrastrukturen själv. Dessutom måste alla stödda Service Broker-objekt, till exempel kö-, tjänst- och meddelandetyper som stöds av kön, definieras. Den här manuella metoden är användbar om ditt program kräver särskilda meddelanden eller meddelandebeteenden, eller om ditt program ingår i ett större Service Broker-program.

Se även