SqlCacheDependency Konstruktorer

Definition

Initierar en ny instans av SqlCacheDependency klassen.

Överlagringar

Name Description
SqlCacheDependency(SqlCommand)

Initierar en ny instans av klassen med hjälp av SqlCacheDependency den angivna SqlCommand för att skapa ett cachenyckelberoende.

SqlCacheDependency(String, String)

Initierar en ny instans av klassen med hjälp av SqlCacheDependency de angivna parametrarna för att skapa ett cachenyckelberoende.

SqlCacheDependency(SqlCommand)

Initierar en ny instans av klassen med hjälp av SqlCacheDependency den angivna SqlCommand för att skapa ett cachenyckelberoende.

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)

Parametrar

sqlCmd
SqlCommand

En SqlCommand som används för att skapa ett SqlCacheDependency objekt.

Undantag

Parametern sqlCmd är null.

Instansen SqlCommand har sin NotificationAutoEnlist egenskap inställd true på och det finns ett @ OutputCache direktiv på sidan med SqlDependency attributet inställt på CommandNotification.

Kommentarer

Den här konstruktorn används för att skapa SqlCacheDependency objekt som använder frågemeddelandefunktionen i SQL Server 2005-produkter.

SQL-uttryck som är associerade med parametern sqlCmd måste innehålla följande:

  • Fullständigt kvalificerade tabellnamn, inklusive namnet på tabellägaren. Om du till exempel vill referera till en tabell med namnet Kunder som ägs av databasägaren måste SQL-instruktionen referera till dbo.customers.

  • Explicita kolumnnamn i Select-instruktionen. Du kan inte använda jokertecknet asterisk (*) för att markera alla kolumner från en tabell. I stället för select * from dbo.customersmåste du till exempel använda select name, address, city, state from dbo.customers.

Den här konstruktorn kan inte användas för att associera en SqlCommand-instans med en SqlCacheDependency-instans på en sida med SQL Server 2005-frågemeddelanden med cachelagring av sidnivåutdata.

Se även

Gäller för

SqlCacheDependency(String, String)

Initierar en ny instans av klassen med hjälp av SqlCacheDependency de angivna parametrarna för att skapa ett cachenyckelberoende.

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)

Parametrar

databaseEntryName
String

Namnet på en databas som definierats i databaselementet i programmets Web.config-fil.

tableName
String

Namnet på databastabellen SqlCacheDependency som är associerad med.

Undantag

Den interna kontrollen för SqlClientPermission misslyckades.

-eller-

Det databaseEntryName gick inte att hitta i listan över databaser som konfigurerats för tabellbaserade meddelanden.

-eller-

Det gick SqlCacheDependency inte att ansluta objektet till databasen under initieringen.

-eller-

Objektet SqlCacheDependency påträffade ett behörighetsnekande fel antingen i databasen eller på de databas lagrade procedurerna som stöder SqlCacheDependency objektet.

Parametern tableName är Empty.

Avsökning är inte aktiverat för SqlCacheDependency.

-eller-

Avsökningsintervallet är inte korrekt konfigurerat.

-eller-

Inga reťazec pripojenia angavs i programmets konfigurationsfil.

-eller-

Det gick inte att hitta reťazec pripojenia som angavs i programmets konfigurationsfil.

-eller-

Den reťazec pripojenia som anges i programmets konfigurationsfil är en tom sträng.

Databasen som anges i parametern databaseEntryName är inte aktiverad för ändringsmeddelanden.

Databastabellen som anges i parametern tableName är inte aktiverad för ändringsmeddelanden.

databaseEntryName är null.

-eller-

tableName är null.

Exempel

I följande kodexempel används den här konstruktorn för att skapa en instans av klassen SqlCacheDependency som är associerad med en databastabell med namnet Kategorier i en SQL Server databas med namnet 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

Kommentarer

Den här konstruktorn används för att skapa SqlCacheDependency objekt för SQL Server 7.0 och SQL Server 2000-produkter.

Databasnamnet som skickas till parametern database måste definieras i programmets Web.config-fil. Följande Web.config-fil definierar till exempel en databas med namnet pubar för SqlCacheDependency ändringsmeddelanden.

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

Två undantag utlöses ofta när konstruktorn används: DatabaseNotEnabledForNotificationException och TableNotEnabledForNotificationException. Om en DatabaseNotEnabledForNotificationException genereras kan du anropa SqlCacheDependencyAdmin.EnableNotifications metoden i undantagshanteringskoden eller använda aspnet_regsql.exe kommandoradsverktyget för att konfigurera databasen för meddelanden. Om en TableNotEnabledForNotificationException genereras kan du anropa SqlCacheDependencyAdmin.EnableTableForNotifications metoden eller använda aspnet_regsql.exe för att konfigurera tabellen för meddelanden.

Se även

Gäller för