SqlCacheDependency Konstruktory
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci SqlCacheDependency třídy.
Přetížení
| Name | Description |
|---|---|
| SqlCacheDependency(SqlCommand) |
Inicializuje novou instanci SqlCacheDependency třídy pomocí zadané SqlCommand k vytvoření závislosti klíče mezipaměti. |
| SqlCacheDependency(String, String) |
Inicializuje novou instanci SqlCacheDependency třídy pomocí zadaných parametrů k vytvoření závislosti klíče mezipaměti. |
SqlCacheDependency(SqlCommand)
Inicializuje novou instanci SqlCacheDependency třídy pomocí zadané SqlCommand k vytvoření závislosti klíče mezipaměti.
public:
SqlCacheDependency(System::Data::SqlClient::SqlCommand ^ sqlCmd);
public SqlCacheDependency(System.Data.SqlClient.SqlCommand sqlCmd);
new System.Web.Caching.SqlCacheDependency : System.Data.SqlClient.SqlCommand -> System.Web.Caching.SqlCacheDependency
Public Sub New (sqlCmd As SqlCommand)
Parametry
- sqlCmd
- SqlCommand
Slouží SqlCommand k vytvoření objektu SqlCacheDependency .
Výjimky
Parametr sqlCmd je null.
Instance SqlCommand má vlastnost NotificationAutoEnlist nastavena na true a existuje @ OutputCache direktiva na stránce s SqlDependency atributem nastaveným na CommandNotification.
Poznámky
Tento konstruktor slouží k vytváření objektů SqlCacheDependency, které používají funkci oznámení dotazu SQL Server 2005 produktů.
Příkazy SQL, které jsou přidružené k parametru sqlCmd , musí obsahovat následující:
Plně kvalifikované názvy tabulek, včetně názvu vlastníka tabulky. Chcete-li například odkazovat na tabulku s názvem Customers, která je vlastníkem databáze, příkaz SQL musí odkazovat na
dbo.customers.Explicitní názvy sloupců v příkazu Select Zástupný znak hvězdičky (*) nelze použít k výběru všech sloupců z tabulky. Například místo
select * from dbo.customers, musíte použítselect name, address, city, state from dbo.customers.
Tento konstruktor nelze použít k přidružení instance SqlCommand k instanci SqlCacheDependency na stránce pomocí SQL Server 2005 oznámení dotazu s ukládáním výstupu na úrovni stránky do mezipaměti.
Viz také
Platí pro
SqlCacheDependency(String, String)
Inicializuje novou instanci SqlCacheDependency třídy pomocí zadaných parametrů k vytvoření závislosti klíče mezipaměti.
public:
SqlCacheDependency(System::String ^ databaseEntryName, System::String ^ tableName);
public SqlCacheDependency(string databaseEntryName, string tableName);
new System.Web.Caching.SqlCacheDependency : string * string -> System.Web.Caching.SqlCacheDependency
Public Sub New (databaseEntryName As String, tableName As String)
Parametry
- databaseEntryName
- String
Název databáze definované v prvku databáze v souboru Web.config aplikace.
- tableName
- String
Název databázové tabulky, ke SqlCacheDependency které je přidružená.
Výjimky
Interní kontrola SqlClientPermission selhala.
nebo
V databaseEntryName seznamu databází nakonfigurovaných pro oznámení založená na tabulkách nebyla nalezena.
nebo
Objekt SqlCacheDependency se během inicializace nemohl připojit k databázi.
nebo
Objekt SqlCacheDependency zjistil chybu odepření oprávnění buď v databázi, nebo v uložené procedury databáze, které podporují SqlCacheDependency objekt.
Parametr tableName je Empty.
Pro dotazování SqlCacheDependencynení povoleno .
nebo
Interval dotazování není správně nakonfigurovaný.
nebo
V konfiguračním souboru aplikace nebyla zadána žádná připojovací řetězec.
nebo
Connection string zadané v konfiguračním souboru aplikace nebylo nalezeno.
nebo
Connection string zadané v konfiguračním souboru aplikace je prázdný řetězec.
Databáze zadaná v parametru databaseEntryName není povolena pro oznámení o změnách.
Databázová tabulka zadaná v parametru tableName není povolená pro oznámení o změnách.
Příklady
Následující příklad kódu používá tento konstruktor k vytvoření instance třídy SqlCacheDependency, která je přidružena k databázové tabulce s názvem Categories v databázi SQL Server s názvem Northwind.
public void Page_Load(object Src, EventArgs E)
{
// Declare the SqlCacheDependency instance, SqlDep.
SqlCacheDependency SqlDep = null;
// Check the Cache for the SqlSource key.
// If it isn't there, create it with a dependency
// on a SQL Server table using the SqlCacheDependency class.
if (Cache["SqlSource"] == null) {
// Because of possible exceptions thrown when this
// code runs, use Try...Catch...Finally syntax.
try {
// Instantiate SqlDep using the SqlCacheDependency constructor.
SqlDep = new SqlCacheDependency("Northwind", "Categories");
}
// Handle the DatabaseNotEnabledForNotificationException with
// a call to the SqlCacheDependencyAdmin.EnableNotifications method.
catch (DatabaseNotEnabledForNotificationException exDBDis) {
try {
SqlCacheDependencyAdmin.EnableNotifications("Northwind");
}
// If the database does not have permissions set for creating tables,
// the UnauthorizedAccessException is thrown. Handle it by redirecting
// to an error page.
catch (UnauthorizedAccessException exPerm) {
Response.Redirect(".\\ErrorPage.htm");
}
}
// Handle the TableNotEnabledForNotificationException with
// a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.
catch (TableNotEnabledForNotificationException exTabDis) {
try {
SqlCacheDependencyAdmin.EnableTableForNotifications("Northwind", "Categories");
}
// If a SqlException is thrown, redirect to an error page.
catch (SqlException exc) {
Response.Redirect(".\\ErrorPage.htm");
}
}
// If all the other code is successful, add MySource to the Cache
// with a dependency on SqlDep. If the Categories table changes,
// MySource will be removed from the Cache. Then generate a message
// that the data is newly created and added to the cache.
finally {
Cache.Insert("SqlSource", Source1, SqlDep);
CacheMsg.Text = "The data object was created explicitly.";
}
}
else {
CacheMsg.Text = "The data was retrieved from the Cache.";
}
}
Sub Page_Load(Src As Object, E As EventArgs)
' Declare the SqlCacheDependency instance, SqlDep.
Dim SqlDep As SqlCacheDependency
' Check the Cache for the SqlSource key.
' If it isn't there, create it with a dependency
' on a SQL Server table using the SqlCacheDependency class.
If Cache("SqlSource") Is Nothing
' Because of possible exceptions thrown when this
' code runs, use Try...Catch...Finally syntax.
Try
' Instantiate SqlDep using the SqlCacheDependency constructor.
SqlDep = New SqlCacheDependency("Northwind", "Categories")
' Handle the DatabaseNotEnabledForNotificationException with
' a call to the SqlCacheDependencyAdmin.EnableNotifications method.
Catch exDBDis As DatabaseNotEnabledForNotificationException
Try
SqlCacheDependencyAdmin.EnableNotifications("Northwind")
' If the database does not have permissions set for creating tables,
' the UnauthorizedAccessException is thrown. Handle it by redirecting
' to an error page.
Catch exPerm As UnauthorizedAccessException
Response.Redirect(".\ErrorPage.htm")
End Try
' Handle the TableNotEnabledForNotificationException with
' a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.
Catch exTabDis As TableNotEnabledForNotificationException
Try
SqlCacheDependencyAdmin.EnableTableForNotifications( _
"Northwind", "Categories")
' If a SqlException is thrown, redirect to an error page.
Catch exc As SqlException
Response.Redirect(".\ErrorPage.htm")
End Try
' If all the other code is successful, add MySource to the Cache
' with a dependency on SqlDep. If the Categories table changes,
' MySource will be removed from the Cache. Then generate a message
' that the data is newly created and added to the cache.
Finally
Cache.Insert("SqlSource", Source1, SqlDep)
CacheMsg.Text = "The data object was created explicitly."
End Try
Else
CacheMsg.Text = "The data was retrieved from the Cache."
End If
End Sub
Poznámky
Tento konstruktor slouží k vytvoření objektů SqlCacheDependency pro produkty SQL Server 7.0 a SQL Server 2000.
Název databáze předaný parametru database musí být definován v souboru Web.config aplikace. Například následující Web.config soubor definuje databázi s názvem pubs pro SqlCacheDependency oznámení o změnách.
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Data Source=(local); Initial Catalog=pubs; Integrated Security=true"; providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled = "true" pollTime = "60000" >
<databases>
<add name="pubs"
connectionStringName="pubs"
pollTime="9000000"
/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
</configuration>
Při použití tohoto konstruktoru jsou obvykle vyvolány dvě výjimky: DatabaseNotEnabledForNotificationException a TableNotEnabledForNotificationException.
DatabaseNotEnabledForNotificationException Pokud je vyvolán, můžete volat metodu SqlCacheDependencyAdmin.EnableNotifications v kódu zpracování výjimek nebo pomocí aspnet_regsql.exe nástroje příkazového řádku nastavit databázi pro oznámení.
TableNotEnabledForNotificationException Pokud je vyvolán, můžete volat metodu SqlCacheDependencyAdmin.EnableTableForNotifications nebo použít aspnet_regsql.exe k nastavení tabulky pro oznámení.