【发布时间】:2018-10-01 07:23:12
【问题描述】:
SqlDependency 没有触发。这是过去有效的方法,所以我不知道出了什么问题。
private static void Main(string[] args)
{
SqlDependency dependency;
var connectionString = "Server=localhost;Database=SqlServerTestDatabase;Trusted_Connection=True;";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand("SELECT FullName, State FROM [Sales].[Customer]", connection))
{
dependency = new SqlDependency(command);
SqlDependency.Start(connectionString);
dependency.OnChange += new OnChangeEventHandler((s, e) =>
{
Console.WriteLine("Success!!!!");
});
using (var reader = command.ExecuteReader())
{
while (reader.Read()) { } //NoOP
}
}
while (true)
{
Console.WriteLine($"Waiting for event. dependency.HasChanges = {dependency.HasChanges}");
Thread.Sleep(1000);
}
}
}
触发事件的SQL:
INSERT INTO Sales.Customer(FullName, State ) VALUES ( N'Test 123', 'CA');
我没有收到错误,事件根本没有触发。
用户是sysadmin,并且在数据库级别启用了服务代理。
数据库版本:14.0.2002.14
【问题讨论】:
-
尝试运行 SQL 跟踪来捕获请求。
-
不错的建议,但我看到正在创建临时 SP。
标签: sql-server sql-server-2017