Dela via


SqlCommand-körning med en SqlNotificationRequest

A SqlCommand kan konfigureras för att generera ett meddelande när data ändras efter att de har hämtats från servern och resultatuppsättningen skulle vara annorlunda om frågan kördes igen. Detta är användbart för scenarier där du vill använda anpassade meddelandeköer på servern eller när du inte vill underhålla live-objekt.

Skapa meddelandebegäran

Du kan använda ett SqlNotificationRequest objekt för att skapa meddelandebegäran genom att binda den till ett SqlCommand objekt. När begäran har skapats behöver SqlNotificationRequest du inte längre objektet. Du kan fråga kön efter eventuella meddelanden och svara på rätt sätt. Meddelanden kan inträffa även om programmet stängs av och sedan startas om.

När kommandot med det associerade meddelandet körs skickar alla ändringar i den ursprungliga resultatuppsättningsutlösaren ett meddelande till SQL Server-kön som konfigurerades i meddelandebegä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.

Kommentar

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.

Det finns inga nya säkerhetselement på klientsidan för SqlNotificationRequest. Detta är främst en serverfunktion och servern har skapat särskilda behörigheter som användarna måste ha för att begära ett meddelande.

Exempel

Följande kodfragment visar hur du skapar en SqlNotificationRequest och associerar den med en 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.

Se även