加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 未触发SqlTableDependency onchange事件

发布时间:2020-12-15 07:57:55 所属栏目:百科 来源:网络整理
导读:我有一个SqlTableDependency的问题.当我对欲望表进行插入/更新/删除时,不会调用My Changed方法. OnStatusChanged事件正常工作. string conn = @"data source=secret server; integrated security=True; initial catalog=secret db;User id=secret user"; var
我有一个SqlTableDependency的问题.当我对欲望表进行插入/更新/删除时,不会调用My 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 db中创建了trigers,services等.

解决方法

我在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读