SqlCacheDependency Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Initialise une nouvelle instance de la classe SqlCacheDependency.
Surcharges
SqlCacheDependency(SqlCommand) |
Initialise une nouvelle instance de la classe SqlCacheDependency, à l'aide de la SqlCommand fournie pour créer une dépendance de clé de cache. |
SqlCacheDependency(String, String) |
Initialise une nouvelle instance de la classe SqlCacheDependency à l'aide des paramètres fournis pour créer une dépendance de clé de cache. |
SqlCacheDependency(SqlCommand)
Initialise une nouvelle instance de la classe SqlCacheDependency, à l'aide de la SqlCommand fournie pour créer une dépendance de clé de cache.
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)
Paramètres
- sqlCmd
- SqlCommand
SqlCommand utilisée pour créer un objet SqlCacheDependency.
Exceptions
Le paramètre sqlCmd
a la valeur null
.
La SqlCommand propriété instance est NotificationAutoEnlist définie true
sur et il existe une @ OutputCache
directive sur la page avec l’attribut SqlDependency
CommandNotification
défini sur .
Remarques
Ce constructeur est utilisé pour créer SqlCacheDependency des objets qui utilisent la fonctionnalité de notification de requête de SQL Server produits 2005.
Les instructions SQL associées au sqlCmd
paramètre doivent inclure les éléments suivants :
Noms de table complets, y compris le nom du propriétaire de la table. Par exemple, pour faire référence à une table nommée Customers qui appartient au propriétaire de la base de données, l’instruction SQL doit faire référence à
dbo.customers
.Noms de colonnes explicites dans l’instruction Select. Vous ne pouvez pas utiliser le caractère générique astérisque (*) pour sélectionner toutes les colonnes d’une table. Par exemple, au lieu de
select * from dbo.customers
, vous devez utiliserselect name, address, city, state from dbo.customers
.
Ce constructeur ne peut pas être utilisé pour associer un SqlCommand instance à un SqlCacheDependency instance sur une page à l’aide de SQL Server notifications de requête 2005 avec mise en cache de sortie au niveau de la page.
Voir aussi
S’applique à
SqlCacheDependency(String, String)
Initialise une nouvelle instance de la classe SqlCacheDependency à l'aide des paramètres fournis pour créer une dépendance de clé de cache.
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)
Paramètres
- databaseEntryName
- String
Nom d'une base de données définie dans l'élément des bases de données du fichier Web.config de l'application.
- tableName
- String
Nom de la table de base de données à laquelle la SqlCacheDependency est associée.
Exceptions
La vérification interne de SqlClientPermission a échoué.
- ou -
Le databaseEntryName
n'a pas été trouvé dans la liste de bases de données configurée pour les notifications basées sur des tables.
- ou -
L'objet SqlCacheDependency n'a pas pu se connecter à la base de données pendant l'initialisation.
- ou -
L'objet SqlCacheDependency a rencontré une erreur de refus d'autorisation sur la base de données ou sur les procédures stockées de base de données qui prennent en charge l'objet SqlCacheDependency.
Le paramètre tableName
a la valeur Empty.
L'interrogation n'est pas activée pour SqlCacheDependency.
- ou -
La fréquence de regroupement n'est pas configurée correctement.
- ou -
Aucune chaîne de connexion n'a été spécifiée dans le fichier de configuration de l'application.
- ou -
La chaîne de connexion spécifiée dans le fichier de configuration de l'application est introuvable.
- ou -
La chaîne de connexion spécifiée dans le fichier de configuration de l'application est une chaîne vide.
La base de données spécifiée dans le paramètre databaseEntryName
n'est pas activée pour les notifications de modifications.
La table de base de données spécifiée dans le paramètre tableName
n'est pas activée pour les notifications de modifications.
Exemples
L’exemple de code suivant utilise ce constructeur pour créer un instance de la SqlCacheDependency classe associée à une table de base de données nommée Categories dans une base de données SQL Server nommée 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
Remarques
Ce constructeur est utilisé pour créer SqlCacheDependency des objets pour SQL Server produits 7.0 et SQL Server 2000.
Le nom de la base de données passé au database
paramètre doit être défini dans le fichier Web.config de l’application. Par exemple, le fichier Web.config suivant définit une base de données nommée pubs pour SqlCacheDependency les notifications de modification.
<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>
Deux exceptions sont généralement levées lorsque ce constructeur est utilisé : DatabaseNotEnabledForNotificationException et TableNotEnabledForNotificationException. Si un DatabaseNotEnabledForNotificationException est levée, vous pouvez appeler la méthode dans le SqlCacheDependencyAdmin.EnableNotifications code de gestion des exceptions ou utiliser l’outil aspnet_regsql.exe
en ligne de commande pour configurer la base de données pour les notifications. Si un TableNotEnabledForNotificationException est levée, vous pouvez appeler la SqlCacheDependencyAdmin.EnableTableForNotifications méthode ou utiliser aspnet_regsql.exe
pour configurer la table pour les notifications.