Comparteix a través de


SqlCacheDependency Constructores

Definición

Inicializa una nueva instancia de la clase SqlCacheDependency.

Sobrecargas

SqlCacheDependency(SqlCommand)

Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando el SqlCommand que se proporciona para crear una dependencia de clave de caché.

SqlCacheDependency(String, String)

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

SqlCacheDependency(SqlCommand)

Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando el SqlCommand que se proporciona 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

SqlCommand utilizado para crear un objeto SqlCacheDependency.

Excepciones

El parámetro sqlCmd 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 SqlCacheDependency objetos que usan la característica de notificación de consultas de SQL Server productos de 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 SqlCommand instancia con una SqlCacheDependency instancia de 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 clase SqlCacheDependency, 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 de base de datos del archivo Web.config de la aplicación.

tableName
String

El nombre de la tabla de base de datos a la que está asociada la dependencia SqlCacheDependency.

Excepciones

Error al efectuar la comprobación interna de SqlClientPermission.

o bien

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

o bien

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

o bien

El objeto SqlCacheDependency encontró un error de denegación de permiso, bien en la base de datos, o bien en los procedimientos almacenados de la base de datos que dan soporte al objeto SqlCacheDependency.

El parámetro tableName es Empty.

No está habilitado el sondeo para SqlCacheDependency.

o bien

El intervalo de sondeo no se ha configurado correctamente.

o bien

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

o bien

No se pudo encontrar la cadena de conexión especificada en el archivo de configuración de la aplicación.

o bien

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

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

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

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 SqlCacheDependency clase asociada a una tabla de base de datos denominada Categories en una base de datos SQL Server denominada 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

Comentarios

Este constructor se usa para crear SqlCacheDependency objetos para productos SQL Server 7.0 y SQL Server 2000.

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>

Se suelen producir 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 el 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