Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > проблема с SqlCacheDependency


Автор: CrotBuddhist 4.5.2007, 19:22
Использую ASP.NET 2.0 и MSSQL2005.
Вот код для создания зависимости кэша от данных в базе.
Код
List list = new List();
using (SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["CachingString"].ConnectionString))
{
string query = "SELECT Id FROM Sport.dbo.Users ";
using (SqlCommand cmd = new SqlCommand(query, con))
{
SqlDependency depend = new SqlDependency(cmd); SqlDependency.Start(con.ConnectionString);
depend.OnChange += new OnChangeEventHandler(MyOnChanged);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
list.Add(rdr[0].ToString());
rdr.Close();
}
}
static void MyOnChanged(object caller, SqlNotificationEventArgs e)
{

String msg = "Notified"; 
}

Для поддержки нотификаций на уровне базы включал следующие настройки:
Код
ALTER DATABASE Sport SET ENABLE_BROKER

проверял командой 
Код
select is_broker_enabled from sys.databases where name = 'Sport'

и убедился,что брокер включён.
Код
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO myUser

Однако, когда в базе руками удаляю, изменяю записи из данной таблицы - в метод MyOnChanged
я не попадаю, значит нотификация не приходит.
Также пробовал включать CLR on SQL Server вот таким образом:
Код
EXEC sp_configure 'show advanced options', '1'
go
RECONFIGURE
go
EXEC sp_configure 'clr enabled', 1
go
RECONFIGURE

Не помогло.
В чём могут быть грабли - как правильно настроить базу, чтобы нотификации работали и об изменениях знала бы ASP.NET.
Знаю, что можно настраивать уведомления с помощью aspnet_regsql(это необходим0, если используешь MSSQL 2000) - но я хочу разобраться именно в связке ASP.NET 2.0 и MSSQL2005.
Буду благодарен за любые советы.

M
Дрон
Пользуйся кнопкой код. Так читать проще.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)