问题标签 [query-notifications]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1319 浏览

c# - SqlDependency 与 SQL Server 数据库的常量轮询

我目前正在开发一个电子邮件应用程序,在该应用程序中我必须监视表中是否有任何新记录插入并为每一行发送电子邮件通知。现在更改(插入)的速度会很低,但最终会变得更多。

最初我正在考虑使用 SQL Server 作业每 3-5 分钟查询一次,然后我查看了SqlDependency但我不确定 SQL 依赖项/查询通知是否是满足我要求的正确选项。

如果每分钟都有一次插入,那么我将每 1 分钟而不是每 3-5 分钟轮询一次表。我知道使用SqlDependency我可以立即收到通知并发送电子邮件通知,但我不希望通过经常轮询而对性能产生影响。最终,一分钟内会有 10K 插入,并且不确定其他作业与 this 之间的拥塞SqlDependency

我正在考虑以某些预定义的时间间隔进行 SQL Server 作业轮询。有什么想法或建议吗?我很确定以前应该有人遇到过同样的情况。感谢您的反馈。谢谢

另一个问题 在高峰期间,可以在查询通知后每隔一分钟左右轮询一次表,但是在处理过程中插入的记录会发生什么(选择/发送电子邮件/更新)。我假设在下一条记录正确插入之前不会收到通知?

0 投票
2 回答
2456 浏览

sql - Sqldependency 权限问题

盯着 sqldependency 时出现以下错误

找不到指定的用户“所有者”。找不到队列“SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa”,因为它不存在或者您没有权限。无效的对象名称“SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa”。

我已经授予了以下权限。不确定要授予 sql 角色/用户的其他权限。感谢您的时间和帮助

0 投票
1 回答
794 浏览

c# - SqlDependency/Query 通知 - SQL Server 重新启动

我有一个运行在具有SqlDependency/ 查询通知的服务器上的应用程序 - 监视不同服务器上表的更改。

在我们重新启动/重新启动 SQL Server 之前它工作正常。当 SQL Server 由于一些维护和补丁重新启动时,其他应用程序会抛出以下错误并停止。我可以肯定地说它会停止,因为一旦 SQL Server 启动并运行,它就不会监视更改。

我必须重新启动应用程序才能重新订阅查询通知。我没有在代码中抛出任何会停止应用程序的异常。我发现异常并发送电子邮件。

System.Data.SqlClient.SqlException (0x80131904):向服务器发送请求时发生传输级错误。(提供者:TCP 提供者,错误:0 - 现有连接被远程主机强行关闭。)--->

System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。

我是SqlDependency/查询通知的新手,所以我不确定这是预期行为还是我做错了什么。我的理解(来自其他帖子(SqlDependency Reliablity?)我不必重新开始工作来重新订阅。

感谢您的时间和答案

0 投票
2 回答
2225 浏览

c# - SqlDependency.OnChange 未在日期时间列上使用过滤器触发

我在 SqlDependency 中使用此 SQL 语句时遇到问题。它根本没有激活 SqlDependency.OnChange 事件,而是在 SQL Server 查询窗口中按预期返回结果。

我在这里阅读了支持的 SELECT 语句部分https://technet.microsoft.com/en-us/library/ms181122(v=sql.105).aspx但没有发现任何违反规则。

有任何想法吗?

更新:

我的完整代码如下:

更新(响应 jmelosegui 的回答):

...

0 投票
2 回答
1628 浏览

c# - SqlDependency.OnChange 触发但 SqlDataReader 未返回数据

当我使用日期时间列过滤器执行查询时

使用 a SqlDependency,对数据源的更改会触发SqlDependency.OnChange事件,但与SqlDataReader关联的事件SqlCommand不会返回数据(reader.HasRows始终返回false)。

当我只是将我的 SQL 语句中的过滤条件更改为

它工作正常并且SqlDataReader返回数据(reader.HasRows返回true

代码:

图片:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
1361 浏览

c# - 服务代理/Sqldependency 错误

我正在使用服务代理/Sqldependency 来监视表更改。实际的控制台应用程序在不同于 sql 服务器的服务器上作为 Windows 服务运行。我们每天停止和启动服务。除了每天发生的两个错误外,它工作正常

第一个错误对应于我们停止和启动 windows 服务的时间,该服务在 tern 停止和启动 sqldependency

Service Broker 需要访问数据库“XXXX”中的主密钥。错误代码:32。主密钥必须存在,并且需要服务主密钥加密。

第二个错误对应于sqldependency停止和启动后表中发生第一次更改的时间范围

对话句柄“{4443C789-1047-E511-80DA-005056A32BA6}”上的查询通知对话框。由于以下错误而关闭:'-8490找不到远程服务'SqlQueryNotificationService-555c9c9d-d01a-423c-8710-7e9e9a63fbca',因为它不存在。'.5

以下是我正在使用的代码片段

OnService 开始:

服务停止

在通知事件中

我不确定我还缺少什么导致上面列出的错误。有人可以帮助我了解导致这些错误的原因以及解决方法。除了每天出现这两个错误之外,该服务似乎运行良好。

感谢您的时间并回复

0 投票
1 回答
75 浏览

c# - SQL Server 停止时的 SqlDependency

我正在使用SqlDependency从 SQL Server 获取更改通知。如果 SQL Server 重新启动,通知将随之恢复,但如果 SQL Server 停止然后启动,则它会失去依赖关系。

这是预期的行为吗?

如果是,那么我怎么知道它是否SqlDependency已停止并且我需要重新注册依赖项。SqlNotificationInfo不提供任何有关它的信息。

0 投票
1 回答
833 浏览

sql-server - SQL Server 查询通知 - 如果我们无法将数据库 SA 角色授予运行网站的用户,则需要 Active Directory 中的权限?

我已经在 DEV 数据库中配置了使用存储过程的 SQL Server 2005 中的查询通知的权限。

问题是在我的本地计算机上运行网站时它可以与我的用户帐户一起使用,而当代码移动到 DEV 网络服务器时它不起作用。

DBA 验证我的用户在 DEV 数据库中具有“sa”权限,但从 DEV Web 服务器运行站点的服务帐户没有这些权限,并且无法在 QA 或 PROD 中分配此权限。他还临时给用户设置了“sa”权限,查询通知就起作用了。

数据库返回的错误消息是:

在目标队列中排队消息时发生异常。错误:15404,状态:19。无法获取有关 Windows NT 组/用户“DOMAIN\WebServiceAccount”的信息,错误代码 0x5。

我尝试过的一些事情:

  • 运行xp_logininfo 'DOMAIN\WebServiceAccount'返回相同的错误:

    无法获得有关 Windows NT 组/用户消息的信息

  • 运行xp_logininfo 'DOMAIN\MyUserAccount'为我的用户返回相同的错误消息:

    无法获得有关 Windows NT 组/用户的信息

到目前为止,我发现的可能解决方案是:

  • 将运行 SQL Server 服务的帐户更改为具有管理员权限的帐户。但是哪些管理员权限?
  • 在 ADFS 服务帐户上授予“Authenticated Users”、“Read Permissions”,或将 tokenGroupsGlobalAndUniversal 分配给用户,并且可能还将它们添加到“Pre-Windows 2000 Compatible Access”组中。这对单个用户有用,还是需要对一个组有用?这安全吗?
  • 要获得更高级别的读取访问权限,请同时添加“Windows 授权访问组”。这是准确的吗?
  • 向用户授予 DOMAIN ADMIN 权限。这是在 Active Directory 中配置的吗?

不幸的是,由于对开发人员的限制,我无法在我们拥有的 Active Directory 中测试所有这些,所以我想问一下是否有人知道我们必须授予在 Active Directory 中运行 SQL Server 服务的用户的确切权限,是否能够查询其他用户的账户?

非常感谢您!

0 投票
2 回答
1632 浏览

sql-server - 使用存储过程的 SQL Server 查询通知

我正在尝试为当前项目实施查询通知。我正在使用SqlDependency. 当我直接在 Ado.net 命令中为查询执行内联 SQL 时,我能够使代码正常工作,但是,当我将相同的确切查询放入存储过程中时,查询通知似乎不起作用。它在事件 argsSqlNotificationEventArgs的参数中返回 Query(8) 的值。e.Info它还继续发射约。每 30 多秒。

这是存储过程:

任何想法为什么这适用于内联 SQL 与使用存储过程?

0 投票
1 回答
1146 浏览

python - cx_Oracle 连续查询通知

我正在使用 Amazon Work Space,并且我使用 VPN 通过 SSH Ubuntu 16.04 实例进行连接。我使用 python 来连接 Oracle 数据库 11g,我需要使用 cx_Oracle 连续查询通知,我创建了这段代码,从这个页面http://www.oracle.com/webfolder/technetwork/tutorials/obe/在 Internet 上查找db/oow10/python_db/python_db.htm

我复制了这个示例并尝试在我的 Ubuntu 实例上运行,它没有任何错误,但是当我在 oracle 数据库上插入/更新/删除某些行时,Ubuntu 终端上没有任何反应。

我能做些什么 ?