Share via


Provádění SqlCommand pomocí SqlNotificationRequest

SqlCommand se nakonfigurovat tak, aby vygenerovala oznámení, když se data po načtení ze serveru změnila a sada výsledků by se v případě opětovného spuštění dotazu změnila. To je užitečné ve scénářích, kdy chcete na serveru používat vlastní fronty oznámení nebo když nechcete udržovat živé objekty.

Vytvoření žádosti o oznámení

Objekt můžete použít SqlNotificationRequest k vytvoření požadavku na oznámení tím, že ho provážete s objektem SqlCommand . Po vytvoření požadavku už objekt nepotřebujete SqlNotificationRequest . Frontu můžete dotazovat na všechna oznámení a odpovídajícím způsobem reagovat. K oznámením může dojít i v případě, že je aplikace vypnutá a následně se restartuje.

Při spuštění příkazu s přidruženým oznámením se všechny změny původní aktivační události sady výsledků odesílají zprávu do fronty SQL Serveru, která byla nakonfigurována v žádosti o oznámení.

Jak dotazujete frontu SQL Serveru a interpretujete zprávu specifickou pro vaši aplikaci. Aplikace zodpovídá za dotazování fronty a reakce na základě obsahu zprávy.

Poznámka:

Pokud používáte požadavky na oznámení SQL Serveru, SqlDependencyvytvořte místo výchozího názvu služby vlastní název fronty.

Neexistují žádné nové prvky zabezpečení na straně klienta pro SqlNotificationRequest. Jedná se především o funkci serveru a server vytvořil speciální oprávnění, která uživatelé musí požádat o oznámení.

Příklad

Následující fragment kódu ukazuje, jak vytvořit SqlNotificationRequest a přidružit ho k .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.

Viz také