Språk

Utförande av SqlCommand med en SqlNotificationRequest

Om du vill få ett meddelande när frågeresultatet ändras konfigurerar du frågan SqlCommand med en meddelandebegäran. Använd meddelandebegäranden för anpassade serverköer eller när du inte vill underhålla liveberoende objekt.

Skapa meddelandebegäran

Skapa SqlNotificationRequest-objektet och tilldela det till kommandots Notification-egenskap före körning. När servern har registrerat begäran behöver du inte behålla begäransobjektet. Gör en fråga mot kön efter meddelanden och svara som din applikation kräver. Meddelanden kan tas emot när programmet är avstängt och förblir tillgängliga när det har startats om.

När kommandot med det associerade meddelandet körs, utlöser alla ändringar i den ursprungliga resultatuppsättningen att ett meddelande skickas till SQL Server-kön som konfigurerades i notifieringsbegäran.

Hur du avsöker SQL Server-kön och tolkar meddelandet är specifikt för ditt program. Programmet ansvarar för att avsöka kön och reagera baserat på innehållet i meddelandet.

Anmärkning

När du använder SQL Server-meddelandebegäranden med SqlDependencyskapar du ett eget könamn i stället för att använda standardtjänstens namn.

Ge användarna de serverbehörigheter som krävs för att begära aviseringar. Klassen SqlNotificationRequest lägger inte till säkerhetskrav på klientsidan.

Exempel

Följande fragment skapar SqlNotificationRequest objektet och associerar det med SqlCommand. Installera Microsoft.Data.SqlClient NuGet-paket och importera Microsoft.Data.Sql och Microsoft.Data.SqlClient. Värdet Options namnger en Service Broker-tjänst och databasen som är värd för den, inte själva kön. Skapa tjänsten och kön enligt beskrivningen i Aktivera frågeaviseringar.

' 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.UserData = "NotificationID"
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks"

' 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.UserData = "NotificationID";
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks";

// 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.

Se även