SqlCacheDependency Constructores

Definición

Inicializa una nueva instancia de la clase SqlCacheDependency.

Sobrecargas

Nombre Description
SqlCacheDependency(SqlCommand)

Inicializa una nueva instancia de la SqlCacheDependency clase utilizando el proporcionado SqlCommand para crear una dependencia de clave de caché.

SqlCacheDependency(String, String)

Inicializa una nueva instancia de la SqlCacheDependency clase utilizando los parámetros proporcionados para crear una dependencia de clave de caché.

SqlCacheDependency(SqlCommand)

Inicializa una nueva instancia de la SqlCacheDependency clase utilizando el proporcionado SqlCommand para crear una dependencia de clave de caché.

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)

Parámetros

sqlCmd
SqlCommand

que SqlCommand se usa para crear un SqlCacheDependency objeto .

Excepciones

El sqlCmd parámetro es null.

La SqlCommand instancia tiene su NotificationAutoEnlist propiedad establecida true en y hay una @ OutputCache directiva en la página con el SqlDependency atributo establecido CommandNotificationen .

Comentarios

Este constructor se usa para crear objetos SqlCacheDependency que usan la característica de notificación de consulta de productos SQL Server 2005.

Las instrucciones SQL asociadas al sqlCmd parámetro deben incluir lo siguiente:

  • Nombres de tabla completos, incluido el nombre del propietario de la tabla. Por ejemplo, para hacer referencia a una tabla denominada Customers que pertenece al propietario de la base de datos, la instrucción SQL debe hacer referencia a dbo.customers.

  • Nombres de columna explícitos en la instrucción Select. No puede usar el carácter comodín asterisco (*) para seleccionar todas las columnas de una tabla. Por ejemplo, en lugar de select * from dbo.customers, debe usar select name, address, city, state from dbo.customers.

Este constructor no se puede usar para asociar una instancia de SqlCommand con una instancia de SqlCacheDependency en una página mediante notificaciones de consulta de SQL Server 2005 con el almacenamiento en caché de salida de nivel de página.

Consulte también

Se aplica a

SqlCacheDependency(String, String)

Inicializa una nueva instancia de la SqlCacheDependency clase utilizando los parámetros proporcionados para crear una dependencia de clave de caché.

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)

Parámetros

databaseEntryName
String

Nombre de una base de datos definida en el elemento databases del archivo Web.config de la aplicación.

tableName
String

Nombre de la tabla de base de datos a la SqlCacheDependency que está asociado.

Excepciones

Error en la comprobación SqlClientPermission interna.

O bien

No databaseEntryName se encontró en la lista de bases de datos configuradas para las notificaciones basadas en tablas.

O bien

El SqlCacheDependency objeto no se pudo conectar a la base de datos durante la inicialización.

O bien

El SqlCacheDependency objeto encontró un error denegado por permisos en la base de datos o en los procedimientos almacenados de la base de datos que admiten el SqlCacheDependency objeto .

El tableName parámetro es Empty.

El sondeo no está habilitado para .SqlCacheDependency

O bien

El intervalo de sondeo no está configurado correctamente.

O bien

No se especificó ningún cadena de conexión en el archivo de configuración de la aplicación.

O bien

No se encontró el cadena de conexión especificado en el archivo de configuración de la aplicación.

O bien

El cadena de conexión especificado en el archivo de configuración de la aplicación es una cadena vacía.

La base de datos especificada en el databaseEntryName parámetro no está habilitada para las notificaciones de cambio.

La tabla de base de datos especificada en el tableName parámetro no está habilitada para las notificaciones de cambio.

databaseEntryName es null.

O bien

tableName es null.

Ejemplos

En el ejemplo de código siguiente se usa este constructor para crear una instancia de la clase />

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

Comentarios

Este constructor se usa para crear objetos /> de

El nombre de la base de datos pasado al database parámetro debe definirse en el archivo Web.config de la aplicación. Por ejemplo, el siguiente archivo Web.config define una base de datos denominada pubs para SqlCacheDependency las notificaciones de cambios.

<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>

Normalmente se producen dos excepciones cuando se usa este constructor: DatabaseNotEnabledForNotificationException y TableNotEnabledForNotificationException. Si se produce una DatabaseNotEnabledForNotificationException excepción, puede llamar al SqlCacheDependencyAdmin.EnableNotifications método en código de control de excepciones o usar la aspnet_regsql.exe herramienta de línea de comandos para configurar la base de datos para las notificaciones. Si se produce una TableNotEnabledForNotificationException excepción , puede llamar al SqlCacheDependencyAdmin.EnableTableForNotifications método o usar aspnet_regsql.exe para configurar la tabla para las notificaciones.

Consulte también

Se aplica a