gpt4 book ai didi

c# - SqlTableDependency onchange 事件未触发

转载 作者:太空狗 更新时间:2023-10-29 17:53:16 26 4
gpt4 key购买 nike

我对 SqlTableDependency 有疑问。当我插入/更新/删除所需表时,不会调用我的 Changed 方法。 OnStatusChanged 事件工作正常。

 string conn = @"data source=secret server; integrated security=True; initial catalog=secret db;User id=secret user";

var mapper = new ModelToTableMapper<SqlDataModel>();

mapper.AddMapping(c => c.datavalue, "datavalue");

using (var dep = new SqlTableDependency<SqlDataModel>(conn, "data", mapper))
{
dep.OnChanged += Changed;
dep.OnStatusChanged += OnStatusChanged;
dep.OnError += OnError;
dep.TraceLevel = TraceLevel.Verbose;
dep.TraceListener = new TextWriterTraceListener(Console.Out);
dep.Start();

Console.WriteLine("Press a key to exit");
Console.ReadKey();
dep.Stop();
}
}
static void OnStatusChanged(object sender, StatusChangedEventArgs e)
{
Console.WriteLine(e.ToString());
}
static void OnError(object sender, ErrorEventArgs e)
{
Console.WriteLine(e.ToString());
}
static void Changed(object sender, RecordChangedEventArgs<SqlDataModel> e)
{
if (e.ChangeType != ChangeType.None)
{
var changedEntity = e.Entity;
Console.WriteLine("DML operation: " + e.ChangeType);
Console.WriteLine("value: " + changedEntity.datavalue);
}
}

以上代码基于https://tabledependency.codeplex.com/wikipage?title=SqlTableDependency我确信我拥有并且正在使用 db_owner 角色。我启用了代理,我看到触发器、服务等是在 mssql 数据库中创建的。

enter image description here

最佳答案

我最终在 sys.transmission_queue 表中发现错误:在目标队列中排队消息时发生异常。错误:

15517, State: 1. Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.

即使数据库已经给了我自己完全权限,我还没有做

ALTER AUTHORIZATION ON DATABASE::secret db TO sa

关于c# - SqlTableDependency onchange 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41169144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com