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
答案 0 :(得分:0)
您有可能成为数据库所有者,但仍然弄乱了帐户的安全设置。要解决此问题,请删除用户(而不是登录名),然后重新创建。