【问题标题】:SQL Dependency not workingSQL依赖不起作用
【发布时间】: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


    【解决方案1】:

    试试:

    use [master] 
    go 
    alter authorization on database::[YourDatabaseName] to [sa] 
    go
    

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      相关资源
      最近更新 更多