SqlCacheDependency Construtores

Definição

Inicializa uma nova instância da classe SqlCacheDependency.

Sobrecargas

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

Um SqlCommand que é usado para criar um SqlCacheDependency objeto.

Exceções

O sqlCmd parâmetro é null.

A SqlCommand instância tem sua NotificationAutoEnlist propriedade definida true e há uma @ OutputCache diretiva na página com o SqlDependency atributo definido como CommandNotification.

Comentários

Esse construtor é usado para criar objetos SqlCacheDependency 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 fazer referência a uma tabela chamada Customers que pertence ao proprietário do banco de dados, a instrução SQL deve se referir dbo.customersa .

  • 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 usar select name, address, city, state from dbo.customers.

Esse construtor não pode ser usado para associar uma instância de SqlCommand a uma instância SqlCacheDependency em uma página usando notificações de consulta SQL Server 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 SqlCacheDependency classe, usando os parâmetros fornecidos para criar uma dependência de 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 Web.config do aplicativo.

tableName
String

O nome da tabela de banco de dados à qual a SqlCacheDependency tabela está associada.

Exceções

Falha na verificação SqlClientPermission interna.

-ou-

O databaseEntryName não foi encontrado na lista de bancos de dados configurados para notificações baseadas em tabela.

-ou-

O SqlCacheDependency objeto não pôde se conectar ao banco de dados durante a inicialização.

-ou-

O SqlCacheDependency objeto encontrou um erro negado por permissão no banco de dados ou nos procedimentos armazenados do banco de dados que dão suporte ao SqlCacheDependency objeto.

O tableName parâmetro é Empty.

A sondagem não está habilitada para .SqlCacheDependency

-ou-

O intervalo de sondagem não está configurado corretamente.

-ou-

Nenhuma cadeia de conexão foi especificada no arquivo de configuração do aplicativo.

-ou-

Não foi possível encontrar o cadeia de conexão especificado no arquivo de configuração do aplicativo.

-ou-

O cadeia de conexão especificado no arquivo de configuração do aplicativo é uma cadeia de caracteres vazia.

O banco de dados especificado no databaseEntryName parâmetro não está habilitado para notificações de alteração.

A tabela de banco de dados especificada no tableName parâmetro não está habilitada para notificações de alteração.

databaseEntryName é null.

-ou-

tableName é null.

Exemplos

O exemplo de código a seguir usa esse construtor para criar uma instância da classe SqlCacheDependency associada a 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 objetos SqlCacheDependency 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 de Web.config do aplicativo. Por exemplo, o arquivo de 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.

Confira também

Aplica-se a