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 Queues
和 System Services
下,会弹出一个东西:
-dbo.SqlQueryNotificationService
到目前为止我还没有找到任何修复方法,非常感谢任何解决此问题的建议。
这篇文章回答了我的问题
https://ardalis.com/sqldependency-issue-resolved
我使用以下查询来设置数据库的所有者:
select 姓名,suser_sname(owner_sid) 来自 sys.databases
即使数据库的所有者已经设置为 sa 运行,以下查询也解决了问题:
更改 DATABASE::dbNameTO sa 的授权;
我正在尝试让 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 Queues
和 System Services
下,会弹出一个东西:
-dbo.SqlQueryNotificationService
到目前为止我还没有找到任何修复方法,非常感谢任何解决此问题的建议。
这篇文章回答了我的问题 https://ardalis.com/sqldependency-issue-resolved
我使用以下查询来设置数据库的所有者:
select 姓名,suser_sname(owner_sid) 来自 sys.databases
即使数据库的所有者已经设置为 sa 运行,以下查询也解决了问题:
更改 DATABASE::dbNameTO sa 的授权;