SqlCacheDependency Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса SqlCacheDependency.
Перегрузки
SqlCacheDependency(SqlCommand) |
Инициализирует новый экземпляр класса SqlCacheDependency с помощью указанной SqlCommand для создания зависимости кэш–ключевое поле. |
SqlCacheDependency(String, String) |
Инициализирует новый экземпляр класса SqlCacheDependency с использованием для создания зависимости кэш–ключевое поле указанных параметров. |
SqlCacheDependency(SqlCommand)
Инициализирует новый экземпляр класса SqlCacheDependency с помощью указанной SqlCommand для создания зависимости кэш–ключевое поле.
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)
Параметры
- sqlCmd
- SqlCommand
SqlCommand, используемый для создания объекта SqlCacheDependency.
Исключения
Параметр sqlCmd
имеет значение null
.
Для SqlCommand свойства экземпляра задано NotificationAutoEnlist значение true
, а на странице есть @ OutputCache
директива с атрибутом SqlDependency
, равным CommandNotification
.
Комментарии
Этот конструктор используется для создания SqlCacheDependency объектов, использующих функцию уведомления о запросах продуктов SQL Server 2005.
Инструкции SQL, связанные с параметром sqlCmd
, должны включать следующее:
Полные имена таблиц, включая имя владельца таблицы. Например, чтобы сослаться на таблицу с именем Customers, принадлежащей владельцу базы данных, инструкция SQL должна ссылаться на
dbo.customers
.Явные имена столбцов в инструкции Select. Нельзя использовать подстановочный знак звездочки (*) для выбора всех столбцов из таблицы. Например, вместо
select * from dbo.customers
необходимо использоватьselect name, address, city, state from dbo.customers
.
Этот конструктор нельзя использовать для связывания экземпляра SqlCommand с экземпляром SqlCacheDependency на странице с помощью уведомлений SQL Server запросов 2005 с кэшированием выходных данных на уровне страницы.
См. также раздел
Применяется к
SqlCacheDependency(String, String)
Инициализирует новый экземпляр класса SqlCacheDependency с использованием для создания зависимости кэш–ключевое поле указанных параметров.
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)
Параметры
- databaseEntryName
- String
Имя базы данных, определенное в элементе баз данных файла Web.config приложения.
- tableName
- String
Имя таблицы базы данных, с которой связан SqlCacheDependency.
Исключения
Не удалось выполнить внутреннюю проверку SqlClientPermission.
-или-
databaseEntryName
не найден в списке баз данных, настроенных для уведомлений на основе таблиц.
-или-
Объекту SqlCacheDependency не удалось подключиться к базе данных во время инициализации.
-или-
Объектом SqlCacheDependency обнаружена ошибка отказа в доступе либо в базе данных, либо в хранимых процедурах базы данных, поддерживающих объект SqlCacheDependency.
Параметр tableName
имеет значение Empty.
Опрос не разрешен для SqlCacheDependency.
-или-
Интервал опроса настроен неправильно.
-или-
В файле конфигурации приложения не указана строка подключения.
-или-
Не удалось найти строку подключения, указанную в файле конфигурации приложения.
-или-
Строка подключения, указанная в файле конфигурации приложения, является пустой строкой.
База данных, указанная в параметре databaseEntryName
, не включена для уведомлений об изменениях.
Таблица базы данных, указанная в параметре tableName
, не включена для уведомлений об изменениях.
Примеры
В следующем примере кода этот конструктор используется для создания экземпляра класса , связанного SqlCacheDependency с таблицей базы данных с именем Categories в базе данных SQL Server с именем 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
Комментарии
Этот конструктор используется для создания SqlCacheDependency объектов для продуктов SQL Server 7.0 и SQL Server 2000.
Имя базы данных, передаваемое параметру database
, должно быть определено в файле Web.config приложения. Например, следующий файл Web.config определяет базу данных с именем pubs для SqlCacheDependency уведомлений об изменениях.
<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>
При использовании этого конструктора обычно возникают два исключения: DatabaseNotEnabledForNotificationException и TableNotEnabledForNotificationException.
DatabaseNotEnabledForNotificationException Если возникает исключение , можно вызвать метод в коде SqlCacheDependencyAdmin.EnableNotifications обработки исключений или использовать aspnet_regsql.exe
программу командной строки для настройки базы данных для уведомлений.
TableNotEnabledForNotificationException Если возникает исключение , можно вызвать SqlCacheDependencyAdmin.EnableTableForNotifications метод или использовать aspnet_regsql.exe
, чтобы настроить таблицу для уведомлений.