SqlCacheDependency Construtores
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicializa uma nova instância da SqlCacheDependency classe.
Sobrecargas
| Name | Description |
|---|---|
| SqlCacheDependency(SqlCommand) |
Inicializa uma nova instância da SqlCacheDependency classe, usando a fornecida SqlCommand para criar uma dependência de chave de cache. |
| SqlCacheDependency(String, String) |
Inicializa uma nova instância da SqlCacheDependency classe, usando os parâmetros fornecidos para criar uma dependência da chave de cache. |
SqlCacheDependency(SqlCommand)
Inicializa uma nova instância da SqlCacheDependency classe, usando a fornecida SqlCommand para criar uma dependência de 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
A SqlCommand que é usado para criar um SqlCacheDependency objeto.
Exceções
O sqlCmd parâmetro é null.
A SqlCommand instância tem a sua NotificationAutoEnlist propriedade definida como true e existe uma @ OutputCache diretiva na página com o SqlDependency atributo definido como CommandNotification.
Observações
Este construtor é usado para criar objetos SqlCacheDependency que utilizam a funcionalidade de notificação de consulta dos produtos SQL Server 2005.
As instruções SQL associadas ao sqlCmd parâmetro devem incluir o seguinte:
Nomes de mesas totalmente qualificados, incluindo o nome do dono da mesa. Por exemplo, para se referir a uma tabela chamada Customers que pertence ao proprietário da base de dados, a instrução SQL deve referir-se a
dbo.customers.Nomes explícitos das colunas na instrução Select. Não pode usar o carácter coringa asterisco (*) para selecionar todas as colunas de uma tabela. Por exemplo, em vez de
select * from dbo.customers, deve usarselect name, address, city, state from dbo.customers.
Este construtor não pode ser usado para associar uma instância SqlCommand a uma instância SqlCacheDependency numa página usando notificações de consulta SQL Server 2005 com cache de saída ao nível da página.
Ver também
Aplica-se a
SqlCacheDependency(String, String)
Inicializa uma nova instância da SqlCacheDependency classe, usando os parâmetros fornecidos para criar uma dependência da 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 uma base de dados definida no elemento de bases de dados do ficheiro Web.config da aplicação.
- tableName
- String
O nome da tabela da base de dados à qual o SqlCacheDependency está associado.
Exceções
A verificação interna para SqlClientPermission falhou.
-ou-
Não databaseEntryName foi encontrado na lista de bases de dados configuradas para notificações baseadas em tabelas.
-ou-
O SqlCacheDependency objeto não conseguia ligar-se à base de dados durante a inicialização.
-ou-
O SqlCacheDependency objeto encontrou um erro de permissão negada, quer na base de dados, quer nos procedimentos armazenados que suportam o SqlCacheDependency objeto.
O tableName parâmetro é Empty.
A sondagem não está ativada para o SqlCacheDependency.
-ou-
O intervalo de sondagem não está corretamente configurado.
-ou-
Não era especificada nenhuma cadeia de ligação no ficheiro de configuração da aplicação.
-ou-
A cadeia de ligação especificada no ficheiro de configuração da aplicação não foi encontrada.
-ou-
A cadeia de ligação especificada no ficheiro de configuração da aplicação é uma string vazia.
A base de dados especificada no databaseEntryName parâmetro não está ativada para notificações de alteração.
A tabela da base de dados especificada no tableName parâmetro não está ativada para notificações de alterações.
Exemplos
O exemplo de código seguinte utiliza este construtor para criar uma instância da classe SqlCacheDependency associada a uma tabela de base de dados chamada Categorias numa base de dados SQL Server chamada 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
Observações
Este construtor é usado para criar objetos SqlCacheDependency para produtos SQL Server 7.0 e SQL Server 2000.
O nome da base de dados passado para o database parâmetro deve ser definido no ficheiro Web.config da aplicação. Por exemplo, o ficheiro de Web.config seguinte define uma base de dados chamada pubs para SqlCacheDependency notificações de alterações.
<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 são frequentemente lançadas quando este construtor é usado: DatabaseNotEnabledForNotificationException e TableNotEnabledForNotificationException. Se um a DatabaseNotEnabledForNotificationException for lançado, pode chamar o SqlCacheDependencyAdmin.EnableNotifications método em código de gestão de exceções, ou usar a aspnet_regsql.exe ferramenta de linha de comandos para configurar a base de dados para notificações. Se for lançado a TableNotEnabledForNotificationException , podes chamar o SqlCacheDependencyAdmin.EnableTableForNotifications método ou usar aspnet_regsql.exe para configurar a tabela de notificações.