Dela via


Körning av SqlCommand med en SqlNotificationRequest

Ladda ned ADO.NET

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 anropa kön med en fråga om eventuella meddelanden och svara på lämpligt 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, utlöser eventuella förändringar i den ursprungliga resultatuppsättningen 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.

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.

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.

Example

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

Nästa steg