Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u querymeldingen wilt gebruiken, configureert u uw database om deze te ondersteunen en verleent u de database-principal de vereiste machtigingen.
Als u querymeldingen wilt gebruiken, moet u het volgende doen:
Schakel querymeldingen in voor uw database.
Zorg ervoor dat de gebruikers-id die wordt gebruikt om verbinding te maken met de database over de benodigde machtigingen beschikt.
Gebruik SqlCommand dit om een geldige
SELECTinstructie uit te voeren met een gekoppeld SqlDependency of SqlNotificationRequest object.Geef code op om de melding te verwerken als de gegevens die worden bewaakt, worden gewijzigd.
Vereisten voor querymeldingen
Querymeldingen worden alleen ondersteund voor SELECT instructies die voldoen aan een lijst met specifieke vereisten. De volgende tabel bevat koppelingen naar de documentatie over Service Broker- en Querymeldingen in de SQL Server-documenten.
Documentatie over SQL Server
Querymeldingen inschakelen om voorbeeldcode uit te voeren
Als u Service Broker wilt inschakelen voor de AdventureWorks database met behulp van SQL Server Management Studio, voert u de volgende Transact-SQL-instructie uit:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
De volgende Transact-SQL instructies moeten worden uitgevoerd op de databaseserver om de querymeldingsvoorbeelden correct uit te voeren.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Machtigingen voor querymeldingen
Verleen de database-principal SUBSCRIBE QUERY NOTIFICATIONS de Service Broker-machtigingen die vereist zijn voor uw wachtrijconfiguratie. Vervang bijvoorbeeld de tijdelijke aanduiding door een bestaande databasegebruiker:
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [<database_user>];
Moderne .NET biedt geen ondersteuning voor Code Access Security. Gebruik niet SqlClientPermission.Demand om querymeldingen te autoriseren. Configureer in plaats daarvan databasemachtigingen.
Een meldingsobject kiezen
Ondersteuning voor querymeldingen biedt twee objecten voor het verwerken van meldingen: SqlDependency en SqlNotificationRequest. Gebruik SqlDependency om wijzigingsgebeurtenissen te ontvangen en de cache van uw toepassing ongeldig te maken. Gebruik SqlNotificationRequest wanneer u uw eigen meldingslistener moet implementeren.
Important
Gebruik System.Data.SqlClient niet voor nieuwe ontwikkeling. Gebruik Microsoft.Data.SqlClient in plaats daarvan. De ASP.NET Framework-klasse SqlCacheDependency vereist System.Data.SqlClient en integreert niet met Microsoft.Data.SqlClient. Voor nieuwe Microsoft.Data.SqlClient-toepassingen verwerk SqlDependency.OnChange en werk de cache bij via de cache-API van uw toepassing.
SqlDependency gebruiken
Om te kunnen gebruiken SqlDependency, moet Service Broker zijn ingeschakeld voor de SQL Server-database die wordt gebruikt en moeten gebruikers machtigingen hebben om meldingen te ontvangen. Service Broker-objecten, zoals de meldingswachtrij, zijn vooraf gedefinieerd.
Daarnaast SqlDependency wordt automatisch een werkrolthread gestart om meldingen te verwerken wanneer deze in de wachtrij worden geplaatst. Het parseert ook het Service Broker-bericht, waarbij de informatie als gebeurtenisargumentgegevens wordt weergegeven.
SqlDependency moet worden geïnitialiseerd door de Start methode aan te roepen om een afhankelijkheid voor de database tot stand te brengen. Dit is een statische methode die slechts eenmaal moet worden aangeroepen tijdens de initialisatie van de toepassing voor elke vereiste databaseverbinding. De Stop methode moet worden aangeroepen bij beëindiging van de toepassing voor elke afhankelijkheidsverbinding die is gemaakt.
SqlNotificationRequest gebruiken
U moet daarentegen SqlNotificationRequest zelf de volledige luisterinfrastructuur implementeren. Daarnaast moeten alle ondersteunende Service Broker-objecten, zoals de wachtrij, service en berichttypen die door de wachtrij worden ondersteund, worden gedefinieerd. Deze handmatige benadering is handig als uw toepassing speciale meldingsberichten of gedrag van meldingen vereist, of als uw toepassing deel uitmaakt van een grotere Service Broker-toepassing.