SqlDependency 适用于我的测试数据库,但不适用于真实数据库

SqlDependency works with my test Database but not with the real Database

我正在尝试让 SqlDependency 使用现有数据库和我的 C# 项目。我已经在测试数据库上测试了我的 C# 代码,它按预期工作。当我尝试使用现有数据库时,当新数据条目添加到数据库时,我没有将事件通过我的 C# 传递到我的 OnChange 事件。因为它适用于我的测试数据库,所以我已将问题隔离到现有数据库。

我已经启用代理:

ALTER DATABASE [dbName] SET ENABLE_BROKER

我已经创建了队列和服务:

CREATE QUEUE NewEventQueue;
CREATE SERVICE NewEventService ON QUEUE NewEventQueue 

([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification])

我无法授予权限,因为我已经是老样子了。当我 运行 以下查询时,它告诉我我不能授予、拒绝或撤销对 sa:

的权限

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "dbo"

(By the way,'SELECT CURRENT_USER' returns the result 'dbo')

当我运行正在 C# 项目中并向数据库发出订阅请求时,在 System QueuesSystem Services 下,会弹出一个东西: -dbo.SqlQueryNotificationService

到目前为止我还没有找到任何修复方法,非常感谢任何解决此问题的建议。

这篇文章回答了我的问题 https://ardalis.com/sqldependency-issue-resolved

我使用以下查询来设置数据库的所有者:

select 姓名,suser_sname(owner_sid) 来自 sys.databases

即使数据库的所有者已经设置为 sa 运行,以下查询也解决了问题:

更改 DATABASE::dbNameTO sa 的授权;