Jazyk
Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud chcete dostávat oznámení při změně výsledků dotazu, nakonfigurujte SqlCommand pomocí žádosti o oznámení. Požadavky na oznámení použijte pro vlastní serverové fronty nebo pokud nechcete udržovat aktivní objekty závislostí.
Vytvoření žádosti o oznámení
Vytvořte objekt a před spuštěním ho přiřaďte k vlastnosti Notification příkazu. Jakmile server požadavek zaregistruje, nemusíte uchovávat objekt požadavku. Dotazujte se fronty na oznámení a odpovězte podle toho, jak vaše aplikace vyžaduje. Oznámení můžou dorazit, když je aplikace ukončená, a po restartu aplikace jsou stále dostupná.
Po provedení příkazu s přidruženým oznámením jakékoli změny původní sady výsledků spouští odeslání zprávy do fronty SQL Serveru konfigurované v žádosti o oznámení.
Jak dotazujete frontu SQL Serveru a interpretujete zprávu, je specifické pro vaši aplikaci. Aplikace je zodpovědná za průběžnou kontrolu fronty a reagování na obsah zprávy.
Poznámka:
Pokud používáte požadavky na oznámení SQL Serveru s SqlDependency, vytvořte místo výchozího názvu služby vlastní název fronty.
Udělte uživatelům oprávnění serveru potřebná k vyžádání oznámení. Třída SqlNotificationRequest nepřidává požadavky na zabezpečení na straně klienta.
Příklad
Následující fragment vytvoří SqlNotificationRequest objekt a přidruží ho k objektu SqlCommand. Nainstalujte balíček NuGet Microsoft.Data.SqlClient a importujte Microsoft.Data.Sql a Microsoft.Data.SqlClient. Hodnota Options označuje službu Service Broker a databázi, která ji hostuje, nikoli samotnou frontu. Vytvořte službu a frontu, jak je popsáno v tématu Povolení oznámení dotazů.
' 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.