【发布时间】:2014-11-27 15:17:06
【问题描述】:
我正在尝试在我的 Windows 应用程序中使用 SQLDependency,并按照定义的步骤 How can I notify my program when the database has been updated? 和 http://dotnet.dzone.com/articles/c-sqldependency-monitoring
我已启用 Service Broker,设置队列,在队列中创建服务:
ALTER DATABASE [Company] SET ENABLE_BROKER;
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
下一步是让 SQL 用户订阅查询通知。我知道我可以提供登录用户,即 sa(使用查询 SELECT * FROM sys.server_principals 验证):
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO sa;
但我收到“找不到用户 'sa',因为它不存在或您没有权限。” 我也使用过像 sysadmin 这样的其他用户来授予权限,但每次我都遇到同样的错误。然后我读到@http://ask.sqlservercentral.com/questions/7803/msg-15151-level-16-state-1-line-1-cannot-find-the.html) 需要将权限提供给用户而不是我所做的登录。所以现在我已经提供了 'public' 和 'guest' 的权限,并且 sql 查询成功执行而不是 dbo(“不能授予、拒绝或撤销对 sa、dbo、实体所有者、information_schema、sys 或您自己的权限。 ")
c# 中的应用程序代码并不太复杂,我已经按照开头提供的链接进行操作,所以没有将代码放在这里(当然我根据上面的 sql 命令更改了队列名称等)。但是当我更改表记录(插入/删除)时,SQlDependency 似乎不起作用。
我哪里错了?有没有我遗漏的步骤
【问题讨论】:
标签: c# sqldependency