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í
SqlCacheDependency(SqlCommand) |
Inicializuje novou instanci SqlCacheDependency třídy pomocí zadané SqlCommand k vytvoření závislosti cache-key. |
SqlCacheDependency(String, String) |
Inicializuje novou instanci třídy pomocí zadaných SqlCacheDependency 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 cache-key.
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
Objekt SqlCommand , který se používá k vytvoření objektu SqlCacheDependency .
Výjimky
Parametr sqlCmd
je null
.
Instance SqlCommand má vlastnost NotificationAutoEnlist nastavenou @ OutputCache
na true
a na stránce je direktiva s atributem nastaveným SqlDependency
na CommandNotification
.
Poznámky
Tento konstruktor se používá k vytváření SqlCacheDependency objektů, které používají funkci query-notification produktů SQL Server 2005.
Příkazy SQL přidružené k parametru sqlCmd
musí obsahovat následující:
Plně kvalifikované názvy tabulek, včetně jména vlastníka tabulky. Pokud například chcete odkazovat na tabulku s názvem Customers(Zákazníci), kterou vlastní vlastník databáze, musí příkaz SQL odkazovat na
dbo.customers
.Explicitní názvy sloupců v příkazu Select K výběru všech sloupců z tabulky nelze použít zástupný znak hvězdičky (*). 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í SqlCommand instance k SqlCacheDependency instanci na stránce pomocí oznámení dotazů SQL Server 2005 s ukládáním výstupu na úrovni stránky do mezipaměti.
Viz také
Platí pro
SqlCacheDependency(String, String)
Inicializuje novou instanci třídy pomocí zadaných SqlCacheDependency 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 elementu databases souboru Web.config aplikace.
- tableName
- String
Název databázové tabulky, ke SqlCacheDependency které je přidružena.
Výjimky
Interní kontrola se SqlClientPermission nezdařila.
-nebo-
Nebyl databaseEntryName
nalezen v seznamu databází nakonfigurovaných pro oznámení na základě tabulek.
-nebo-
Objekt se SqlCacheDependency během inicializace nemohl připojit k databázi.
-nebo-
U SqlCacheDependency objektu došlo k chybě odepření oprávnění buď v databázi, nebo v uložených procedurách databáze, které objekt podporují SqlCacheDependency .
Parametr tableName
je Empty.
Pro . Není povolené SqlCacheDependencydotazování.
-nebo-
Interval dotazování není správně nakonfigurovaný.
-nebo-
V konfiguračním souboru aplikace nebyl zadán žádný připojovací řetězec.
-nebo-
Připojovací řetězec zadaný v konfiguračním souboru aplikace nebyl nalezen.
-nebo-
Připojovací řetězec zadaný v konfiguračním souboru aplikace je prázdný řetězec.
Databáze zadaná v parametru databaseEntryName
není povolená pro oznámení o změnách.
Tabulka databáze 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 SqlCacheDependency třídy, 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 se používá k vytváření SqlCacheDependency objektů 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í změn.
<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í nástroje příkazového aspnet_regsql.exe
řádku nastavit databázi pro oznámení.
TableNotEnabledForNotificationException Pokud je vyvolán, můžete zavolat metodu SqlCacheDependencyAdmin.EnableTableForNotifications nebo použít aspnet_regsql.exe
k nastavení tabulky pro oznámení.