SqlCacheDependency Constructores
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 CommandNotification
en .
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 usarselect 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.
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.