SqlCacheDependency Konstruktory
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Inicjuje nowe wystąpienie klasy SqlCacheDependency.
Przeciążenia
SqlCacheDependency(SqlCommand) |
Inicjuje SqlCacheDependency nowe wystąpienie klasy przy użyciu podanej SqlCommand metody w celu utworzenia zależności klucza pamięci podręcznej. |
SqlCacheDependency(String, String) |
Inicjuje SqlCacheDependency nowe wystąpienie klasy przy użyciu podanych parametrów w celu utworzenia zależności klucza pamięci podręcznej. |
SqlCacheDependency(SqlCommand)
Inicjuje SqlCacheDependency nowe wystąpienie klasy przy użyciu podanej SqlCommand metody w celu utworzenia zależności klucza pamięci podręcznej.
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)
Parametry
- sqlCmd
- SqlCommand
Element SqlCommand służący do tworzenia SqlCacheDependency obiektu.
Wyjątki
Parametr sqlCmd
to null
.
Wystąpienie SqlCommand ma ustawioną @ OutputCache
właściwość NotificationAutoEnlist , true
a na stronie znajduje się dyrektywa z atrybutem ustawionym SqlDependency
na CommandNotification
.
Uwagi
Ten konstruktor służy do tworzenia SqlCacheDependency obiektów korzystających z funkcji powiadamiania o zapytaniach produktów SQL Server 2005.
Instrukcje SQL skojarzone z parametrem sqlCmd
muszą zawierać następujące elementy:
W pełni kwalifikowane nazwy tabel, w tym nazwę właściciela tabeli. Aby na przykład odwołać się do tabeli o nazwie Customers, która jest własnością właściciela bazy danych, instrukcja SQL musi odwoływać się do
dbo.customers
.Jawne nazwy kolumn w instrukcji Select. Nie można użyć gwiazdki (*) symbolu wieloznakowego, aby wybrać wszystkie kolumny z tabeli. Na przykład zamiast
select * from dbo.customers
metody należy użyć poleceniaselect name, address, city, state from dbo.customers
.
Tego konstruktora nie można użyć do skojarzenia SqlCommand wystąpienia z wystąpieniem SqlCacheDependency na stronie przy użyciu powiadomień dotyczących zapytań SQL Server 2005 z buforowaniem danych wyjściowych na poziomie strony.
Zobacz też
Dotyczy
SqlCacheDependency(String, String)
Inicjuje SqlCacheDependency nowe wystąpienie klasy przy użyciu podanych parametrów w celu utworzenia zależności klucza pamięci podręcznej.
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)
Parametry
- databaseEntryName
- String
Nazwa bazy danych zdefiniowanej w elemecie baz danych pliku Web.config aplikacji.
- tableName
- String
Nazwa tabeli bazy danych, SqlCacheDependency z którą jest skojarzona.
Wyjątki
Sprawdzanie wewnętrzne nie SqlClientPermission powiodło się.
-lub-
Nie można odnaleźć elementu databaseEntryName
na liście baz danych skonfigurowanych dla powiadomień opartych na tabelach.
-lub-
Obiekt SqlCacheDependency nie może nawiązać połączenia z bazą danych podczas inicjowania.
-lub-
Obiekt SqlCacheDependency napotkał błąd odmowy uprawnień w bazie danych lub w procedurach składowanych bazy danych, które obsługują SqlCacheDependency obiekt.
Parametr tableName
to Empty.
Sondowanie nie jest włączone dla .SqlCacheDependency
-lub-
Interwał sondowania nie jest poprawnie skonfigurowany.
-lub-
W pliku konfiguracji aplikacji nie określono parametrów połączenia.
-lub-
Nie można odnaleźć parametrów połączenia określonych w pliku konfiguracji aplikacji.
-lub-
Parametry połączenia określone w pliku konfiguracji aplikacji są pustymi parametrami.
Baza danych określona w parametrze databaseEntryName
nie jest włączona dla powiadomień o zmianie.
Tabela bazy danych określona w parametrze tableName
nie jest włączona dla powiadomień o zmianie.
Przykłady
Poniższy przykład kodu używa tego konstruktora do utworzenia wystąpienia klasy skojarzonej SqlCacheDependency z tabelą bazy danych o nazwie Categories w bazie danych SQL Server o nazwie 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
Uwagi
Ten konstruktor służy do tworzenia SqlCacheDependency obiektów dla produktów SQL Server 7.0 i SQL Server 2000.
Nazwa bazy danych przekazana do parametru database
musi być zdefiniowana w pliku Web.config aplikacji. Na przykład poniższy plik Web.config definiuje bazę danych o nazwie pubs na potrzeby SqlCacheDependency powiadomień o zmianie.
<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>
Dwa wyjątki są często zgłaszane, gdy ten konstruktor jest używany: DatabaseNotEnabledForNotificationException i TableNotEnabledForNotificationException.
DatabaseNotEnabledForNotificationException Jeśli obiekt zostanie zgłoszony, możesz wywołać metodę SqlCacheDependencyAdmin.EnableNotifications w kodzie obsługi wyjątków lub użyć aspnet_regsql.exe
narzędzia wiersza polecenia, aby skonfigurować bazę danych dla powiadomień.
TableNotEnabledForNotificationException Jeśli obiekt zostanie zgłoszony, możesz wywołać metodę SqlCacheDependencyAdmin.EnableTableForNotifications lub użyć aspnet_regsql.exe
jej do skonfigurowania tabeli powiadomień.