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.
Objekt SqlDependency lze přidružit SqlCommand k detekci, kdy se výsledky dotazu liší od původně načtených výsledků. Delegáta můžete také přiřadit k OnChange události, která se aktivuje, když se výsledky pro přidružený příkaz změní. Před spuštěním přikazu přidružte SqlDependency ke příkazu.
HasChanges Vlastnost objektu SqlDependency lze také použít k určení, jestli se výsledky dotazu od prvního načtení dat změnily.
Bezpečnostní aspekty
Infrastruktura závislostí spoléhá na SqlConnection, která se otevírá při zavolání Start, aby přijímala oznámení o tom, že se podkladová data pro daný příkaz změnila. Schopnost klienta zahájit volání SqlDependency.Start, je řízena pomocí atributů zabezpečení přístupu ke kódu SqlClientPermission. Další informace najdete v tématu Povolení oznámení dotazů.
Example
Následující kroky ukazují, jak deklarovat závislost, spustit příkaz a přijmout oznámení při změně sady výsledků:
SqlDependencyZahajte připojení k serveru.Vytvořte objekty SqlConnection a SqlCommand pro připojení k serveru a definování příkazu Transact-SQL.
Vytvořte nový
SqlDependencyobjekt nebo použijte existující objekt a vytvořte vazbu s objektemSqlCommand. Interně toto přidružení vytvoří SqlNotificationRequest objekt a podle potřeby ho sváže s objektem příkazu. Tato žádost o oznámení obsahuje interní identifikátor, který jednoznačně identifikuje tentoSqlDependencyobjekt. Spustí se také naslouchací proces klienta, pokud ještě není aktivní.Přiřaďte obsluhu události pro událost
OnChangeobjektuSqlDependency.Spusťte příkaz pomocí některé z
Executemetod objektuSqlCommand. Vzhledem k tomu, že příkaz je svázán s objektem oznámení, server rozpozná, že musí vygenerovat oznámení, a informace o frontě bude odkazovat na frontu závislostí.SqlDependencyZastavte připojení k serveru.
Pokud některý uživatel potom změní podkladová data, Microsoft SQL Server zjistí, že na takovou změnu čeká oznámení, a odešle oznámení, které je zpracováno a předáno klientovi prostřednictvím podkladového SqlConnection kódu vytvořeného voláním SqlDependency.Start. Klientský posluchač obdrží zprávu o zneplatnění. Klientský naslouchací proces pak vyhledá přidružený SqlDependency objekt a aktivuje OnChange událost.
Následující fragment kódu ukazuje vzor návrhu, který byste použili k vytvoření ukázkové aplikace.
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the reference in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}