Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Ett SqlDependency objekt kan associeras med ett SqlCommand för att identifiera när frågeresultat skiljer sig från de resultat som ursprungligen hämtades. Du kan också tilldela ett ombud till OnChange händelsen, som utlöses när resultatet ändras för ett associerat kommando. Associera SqlDependency med kommandot innan du kör det. Egenskapen HasChangesSqlDependency för kan också användas för att avgöra om frågeresultatet har ändrats sedan data först hämtades.
Säkerhetsfrågor
Beroendeinfrastrukturen förlitar sig på en SqlConnection som öppnas när Start anropas för att ta emot meddelanden om att underliggande data har ändrats för ett visst kommando. Möjligheten för en klient att starta anropet till SqlDependency.Start styrs med hjälp av SqlClientPermission och kodåtkomstsäkerhetsattribut. Mer information finns i Aktivera frågemeddelanden.
Example
Följande steg visar hur du deklarerar ett beroende, kör ett kommando och får ett meddelande när resultatuppsättningen ändras:
Initiera en
SqlDependencyanslutning till servern.Skapa SqlConnection och SqlCommand objekt för att ansluta till servern och definiera en Transact-SQL-instruktion.
Skapa ett nytt
SqlDependencyobjekt eller använd ett befintligt objekt och binda det till objektetSqlCommand. Internt skapar den här associationen ett SqlNotificationRequest objekt och binder det till kommandoobjektet efter behov. Den här meddelandebegäran innehåller en intern identifierare som unikt identifierar det härSqlDependencyobjektet. Den startar också klientlyssnaren om den inte redan är aktiv.Abonnera på en händelsehanterare till
OnChange-händelsen förSqlDependency-objektet.Kör kommandot med någon av objektmetoderna
ExecuteSqlCommand. Eftersom kommandot är bundet till meddelandeobjektet identifierar servern att det måste generera ett meddelande och köinformationen pekar på beroendekön.SqlDependencyStoppa anslutningen till servern.
Om någon användare sedan ändrar underliggande data upptäcker Microsoft SQL Server att det finns ett meddelande som väntar på en sådan ändring och publicerar ett meddelande som bearbetas och vidarebefordras till klienten via den underliggande SqlConnection som skapades genom att anropa SqlDependency.Start. Klientlyssnaren tar emot ogiltighetsmeddelandet. Klientlyssnaren letar sedan upp det associerade SqlDependency objektet och utlöser OnChange händelsen.
Följande kodfragment visar det designmönster som du skulle använda för att skapa ett exempelprogram.
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);
}