SqlCacheDependency Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe SqlCacheDependency.
Sobrecargas
SqlCacheDependency(SqlCommand) |
Inicializa uma nova instância da classe SqlCacheDependency usando o SqlCommand fornecido para criar uma dependência chave de cache. |
SqlCacheDependency(String, String) |
Inicializa uma nova instância da classe SqlCacheDependency usando os parâmetros fornecidos para criar uma dependência chave de cache. |
SqlCacheDependency(SqlCommand)
Inicializa uma nova instância da classe SqlCacheDependency usando o SqlCommand fornecido para criar uma dependência chave 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)
Parâmetros
- sqlCmd
- SqlCommand
Um SqlCommand usado para criar um objeto SqlCacheDependency.
Exceções
O parâmetro sqlCmd
é null
.
A SqlCommand instância tem sua NotificationAutoEnlist propriedade definida como true
e há uma @ OutputCache
diretiva na página com o SqlDependency
atributo definido CommandNotification
como .
Comentários
Esse construtor é usado para criar SqlCacheDependency objetos que usam o recurso de notificação de consulta de produtos SQL Server 2005.
As instruções SQL associadas ao sqlCmd
parâmetro devem incluir o seguinte:
Nomes de tabela totalmente qualificados, incluindo o nome do proprietário da tabela. Por exemplo, para se referir a uma tabela chamada Customers que pertence ao proprietário do banco de dados, a instrução SQL deve se referir a
dbo.customers
.Nomes de coluna explícitos na instrução Select. Você não pode usar o caractere curinga asterisco (*) para selecionar todas as colunas de uma tabela. Por exemplo, em vez de
select * from dbo.customers
, você deve usarselect name, address, city, state from dbo.customers
.
Esse construtor não pode ser usado para associar uma SqlCommand instância a uma SqlCacheDependency instância em uma página usando SQL Server notificações de consulta 2005 com cache de saída no nível da página.
Confira também
Aplica-se a
SqlCacheDependency(String, String)
Inicializa uma nova instância da classe SqlCacheDependency usando os parâmetros fornecidos para criar uma dependência chave 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)
Parâmetros
- databaseEntryName
- String
O nome de um banco de dados definido no elemento de bancos de dados do arquivo de Web.config do aplicativo.
- tableName
- String
O nome da tabela de banco de dados associada ao SqlCacheDependency.
Exceções
A verificação interna de SqlClientPermission falhou.
- ou -
O databaseEntryName
não foi encontrado na lista de bancos de dados configurada para notificações baseadas em tabela.
- ou -
O objeto SqlCacheDependency não conseguir se conectar ao banco de dados durante a inicialização.
- ou -
O objeto SqlCacheDependency encontrou um erro de permissão negada no banco de dados ou nos procedimentos armazenados do banco de dados que oferecem suporte ao objeto SqlCacheDependency.
O parâmetro tableName
é Empty.
A sondagem não está habilitada para o SqlCacheDependency.
- ou -
O intervalo de sondagem não está configurado corretamente.
- ou -
Nenhuma cadeia de conexão foi especificada no arquivo de configuração de aplicativo.
- ou -
Não foi possível encontrar a cadeia de conexão especificada no arquivo de configuração de aplicativo.
- ou -
A cadeia de conexão especificada no arquivo de configuração de aplicativo é uma cadeia de caracteres vazia.
O banco de dados especificado no parâmetro databaseEntryName
não está habilitado para notificações de alteração.
A tabela de banco de dados especificada no parâmetro tableName
não está habilitada para notificações de alteração.
Exemplos
O exemplo de código a seguir usa esse construtor para criar uma instância da classe associada a SqlCacheDependency uma tabela de banco de dados chamada Categories em um banco de dados SQL Server chamado 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
Comentários
Esse construtor é usado para criar SqlCacheDependency objetos para SQL Server produtos 7.0 e SQL Server 2000.
O nome do banco de dados passado para o database
parâmetro deve ser definido no arquivo Web.config do aplicativo. Por exemplo, o arquivo Web.config a seguir define um banco de dados chamado pubs para SqlCacheDependency notificações de alteração.
<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>
Duas exceções geralmente são geradas quando esse construtor é usado: DatabaseNotEnabledForNotificationException e TableNotEnabledForNotificationException. Se um DatabaseNotEnabledForNotificationException for gerado, você poderá chamar o SqlCacheDependencyAdmin.EnableNotifications método no código de tratamento de exceções ou usar a aspnet_regsql.exe
ferramenta de linha de comando para configurar o banco de dados para notificações. Se um TableNotEnabledForNotificationException for gerado, você poderá chamar o SqlCacheDependencyAdmin.EnableTableForNotifications método ou usar aspnet_regsql.exe
para configurar a tabela para notificações.