Многие люди, кажется, имеют проблемы с выполнением этой работы, поэтому я не новичок здесь, надеясь, что кто-то сможет указать, что еще я могу проверить, это то, что я делаю ...
Среда: .net 4.0, SQL Server Exrpress 2008 R2
Шаги, предпринятые для настройки базы данных
CREATE QUEUE WebSiteCacheMessages ;
CREATE SERVICE WebCacheNotifications ON QUEUE WebSiteCacheMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]) ;
CREATE ROUTE WebCacheMessagesRoute WITH SERVICE_NAME = 'WebCacheNotifications',ADDRESS = 'LOCAL' ;
EXEC sp_configure 'show advanced options', '1'
GO
RECONFIGURE
GO
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
ALTER DATABASE EFTest SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
GO
ALTER AUTHORIZATION ON DATABASE::[EFTEST] TO [domain\user];
GO
Следующий код для проверкиуведомление
static void Main(string[] args)
{
var id = 0;
string sqlStatement = "SELECT [Id] ,[FirstName],[LastName],[Email] FROM [dbo].[People]";
string queueName = "WebSiteCacheMessages";
string connectionString = ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString;
try
{
SqlDependency.Start(connectionString, queueName);
using (var db = new DataContext(connectionString))
{
var person = new Person { Email = "test@test.com", FirstName = "Testy", LastName = "Tester", HomeAddress = address };
db.Persons.Add(person);
db.SaveChanges();
id = person.Id;
}
var dependency = new SqlDependency();
dependency.AddCommandDependency(new SqlCommand(sqlStatement));
dependency.OnChange += (o, e) =>
{
Console.WriteLine("Notification called !");
};
Console.ReadLine();
}
finally
{
SqlDependency.Stop(connectionString, queueName);
}
}
когда я запускаю инструкцию обновления для столбца электронной почты в окне запроса на сервере sql, я не вижу запускаемого события изменения.
В журнале событий нет событийили журналы базы данных, и когда я запускаю следующий запрос, я ничего не вижу
select * from WebSiteCacheMessages -- queue name
select * from sys.transmission_queue
большое спасибо за чтение этого ...