SqlCommand-uitvoering met een SqlNotificationRequest

Een SqlCommand kan worden geconfigureerd om een melding te genereren wanneer gegevens worden gewijzigd nadat deze van de server zijn opgehaald en de resultatenset anders zou zijn als de query opnieuw werd uitgevoerd. Dit is handig voor scenario's waarin u aangepaste meldingswachtrijen op de server wilt gebruiken of wanneer u geen live-objecten wilt onderhouden.

De meldingsaanvraag maken

U kunt een SqlNotificationRequest object gebruiken om de meldingsaanvraag te maken door deze aan een SqlCommand object te koppelen. Zodra de aanvraag is gemaakt, hebt u het SqlNotificationRequest object niet meer nodig. U kunt een query uitvoeren op de wachtrij voor meldingen en op de juiste wijze reageren. Meldingen kunnen zich voordoen, zelfs als de toepassing wordt afgesloten en vervolgens opnieuw wordt opgestart.

Wanneer de opdracht met de bijbehorende melding wordt uitgevoerd, worden wijzigingen in de oorspronkelijke resultatensettrigger die een bericht verzendt naar de SQL Server-wachtrij die is geconfigureerd in de meldingsaanvraag.

Hoe u de SQL Server-wachtrij peilt en het bericht interpreteert, is specifiek voor uw toepassing. De toepassing is verantwoordelijk voor het peilen van de wachtrij en het reageren op basis van de inhoud van het bericht.

Notitie

Wanneer u SQL Server-meldingsaanvragen gebruikt, SqlDependencymaakt u uw eigen wachtrijnaam in plaats van de standaardservicenaam te gebruiken.

Er zijn geen nieuwe beveiligingselementen aan de clientzijde voor SqlNotificationRequest. Dit is voornamelijk een serverfunctie en de server heeft speciale bevoegdheden gemaakt die gebruikers nodig hebben om een melding aan te vragen.

Opmerking

Het volgende codefragment laat zien hoe u een SqlNotificationRequest bestand maakt en koppelt aan een SqlCommand.

' Assume connection is an open SqlConnection.
' Create a new SqlCommand object.
Dim command As New SqlCommand( _
  "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection)

' Create a SqlNotificationRequest object.
Dim notificationRequest As New SqlNotificationRequest()
notificationRequest.id = "NotificationID"
notificationRequest.Service = "mySSBQueue"

' Associate the notification request with the command.
command.Notification = notificationRequest
' Execute the command.
command.ExecuteReader()
' Process the DataReader.
' You can use Transact-SQL syntax to periodically poll the
' SQL Server queue to see if you have a new message.
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
SqlCommand command=new SqlCommand(
 "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection);

// Create a SqlNotificationRequest object.
SqlNotificationRequest notificationRequest=new SqlNotificationRequest();
notificationRequest.id="NotificationID";
notificationRequest.Service="mySSBQueue";

// Associate the notification request with the command.
command.Notification=notificationRequest;
// Execute the command.
command.ExecuteReader();
// Process the DataReader.
// You can use Transact-SQL syntax to periodically poll the
// SQL Server queue to see if you have a new message.

Zie ook