SQL依赖项不起作用

时间:2014-09-15 12:24:00

标签: c# sqldependency

我正在尝试在我的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;

enter image description here

但我得到“找不到用户'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或你自己的权限。 “) enter image description here

c#中的应用程序代码并不太复杂,我已经按照开头提供的链接进行操作,所以不要在这里放置代码(当然我根据上面的sql命令更改了队列名称等)。但是当我更改表记录(插入/删除)时,SQlDependency似乎不起作用。

我哪里错了?有没有我缺少的步骤

1 个答案:

答案 0 :(得分:0)

尝试:

use [master] 
go 
alter authorization on database::[YourDatabaseName] to [sa] 
go
相关问题