Partager via


SqlCacheDependency Constructeurs

Définition

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 SqlDependencyCommandNotificationdé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 utiliser select 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.

databaseEntryName a la valeur null.

-ou-

tableName a la valeur null.

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.

Voir aussi

S’applique à