SqlCacheDependency Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Initialisiert eine neue Instanz der SqlCacheDependency-Klasse.
Überlädt
SqlCacheDependency(SqlCommand) |
Initialisiert eine neue Instanz der SqlCacheDependency-Klasse mit dem angegebenen SqlCommand, um eine Abhängigkeit zwischen Cache und Schlüssel zu erstellen. |
SqlCacheDependency(String, String) |
Initialisiert eine neue Instanz der SqlCacheDependency-Klasse mit den angegebenen Parametern zum Erstellen einer Abhängigkeit zwischen Cache und Schlüssel. |
SqlCacheDependency(SqlCommand)
Initialisiert eine neue Instanz der SqlCacheDependency-Klasse mit dem angegebenen SqlCommand, um eine Abhängigkeit zwischen Cache und Schlüssel zu erstellen.
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)
Parameter
- sqlCmd
- SqlCommand
Ein SqlCommand, der zum Erstellen eines SqlCacheDependency-Objekts verwendet wird.
Ausnahmen
Der sqlCmd
-Parameter ist null
.
Für die SqlCommand instance ist die NotificationAutoEnlist -Eigenschaft auf true
festgelegt, und auf der Seite befindet sich eine @ OutputCache
Direktive, deren SqlDependency
Attribut auf CommandNotification
festgelegt ist.
Hinweise
Dieser Konstruktor wird verwendet, um Objekte zu erstellenSqlCacheDependency, die die Abfragebenachrichtigungsfunktion von SQL Server 2005-Produkten verwenden.
SQL-Anweisungen, die dem sqlCmd
Parameter zugeordnet sind, müssen Folgendes enthalten:
Vollqualifizierte Tabellennamen, einschließlich des Namens des Tabellenbesitzers. Wenn Sie beispielsweise auf eine Tabelle namens Customers verweisen möchten, die dem Datenbankbesitzer gehört, muss die SQL-Anweisung auf
dbo.customers
verweisen.Explizite Spaltennamen in der Select-Anweisung. Sie können nicht das Platzhalterzeichen (*) verwenden, um alle Spalten aus einer Tabelle auszuwählen. Anstelle von
select * from dbo.customers
müssen Sie beispielsweise verwendenselect name, address, city, state from dbo.customers
.
Dieser Konstruktor kann nicht verwendet werden, um einen SqlCommand instance einem SqlCacheDependency instance auf einer Seite zuzuordnen, indem SQL Server 2005-Abfragebenachrichtigungen mit Ausgabezwischenspeicherung auf Seitenebene verwendet werden.
Weitere Informationen
Gilt für:
SqlCacheDependency(String, String)
Initialisiert eine neue Instanz der SqlCacheDependency-Klasse mit den angegebenen Parametern zum Erstellen einer Abhängigkeit zwischen Cache und Schlüssel.
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)
Parameter
- databaseEntryName
- String
Der Name einer im databases-Element der Web.config-Datei der Anwendung definierten Datenbank.
- tableName
- String
Der Name der Datenbanktabelle, der die SqlCacheDependency zugeordnet wird.
Ausnahmen
Die interne Überprüfung auf SqlClientPermission schlug fehl.
- oder -
Der databaseEntryName
wurde nicht in der Liste der Datenbanken gefunden, die für tabellenbasierte Benachrichtigungen konfiguriert wurden.
- oder -
Das SqlCacheDependency-Objekt konnte während der Initialisierung keine Verbindung mit der Datenbank herstellen.
- oder -
Das SqlCacheDependency-Objekt hat einen Berechtigungsverweigerungsfehler festgestellt, der in der Datenbank oder in den in der Datenbank gespeicherten Prozeduren, die das SqlCacheDependency-Objekt unterstützen, aufgetreten ist.
Der tableName
-Parameter ist Empty.
Für die SqlCacheDependency ist kein Abruf aktiviert.
- oder -
Das Abrufintervall ist nicht ordnungsgemäß konfiguriert.
- oder -
In der Konfigurationsdatei der Anwendung wurde keine Verbindungszeichenfolge angegeben.
- oder -
Die in der Konfigurationsdatei der Anwendung angegebene Verbindungszeichenfolge konnte nicht gefunden werden.
- oder -
Die in der Konfigurationsdatei der Anwendung angegebene Verbindungszeichenfolge ist eine leere Zeichenfolge.
Die im databaseEntryName
-Parameter angegebene Datenbank ist nicht für Änderungsbenachrichtigungen aktiviert.
Die im tableName
-Parameter angegebene Datenbanktabelle ist nicht für Änderungsbenachrichtigungen aktiviert.
Beispiele
Im folgenden Codebeispiel wird dieser Konstruktor verwendet, um eine instance der -Klasse zu erstellen, die SqlCacheDependency einer Datenbanktabelle namens Categories in einer SQL Server Datenbank namens Northwind zugeordnet ist.
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
Hinweise
Dieser Konstruktor wird verwendet, um Objekte für SQL Server 7.0- und SQL Server 2000-Produkte zu erstellenSqlCacheDependency.
Der an den database
Parameter übergebene Datenbankname muss in der Web.config-Datei der Anwendung definiert werden. Die folgende Web.config-Datei definiert beispielsweise eine Datenbank namens pubs für SqlCacheDependency Änderungsbenachrichtigungen.
<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>
Zwei Ausnahmen werden häufig ausgelöst, wenn dieser Konstruktor verwendet wird: DatabaseNotEnabledForNotificationException und TableNotEnabledForNotificationException. Wenn ein DatabaseNotEnabledForNotificationException ausgelöst wird, können Sie die SqlCacheDependencyAdmin.EnableNotifications -Methode im Code zur Ausnahmebehandlung aufrufen oder das aspnet_regsql.exe
Befehlszeilentool verwenden, um die Datenbank für Benachrichtigungen einzurichten. Wenn ein TableNotEnabledForNotificationException ausgelöst wird, können Sie die SqlCacheDependencyAdmin.EnableTableForNotifications -Methode aufrufen oder aspnet_regsql.exe
verwenden, um die Tabelle für Benachrichtigungen einzurichten.