关闭时 SqlDependency 订阅不会从 dm_qn_subscriptions 中删除

2024-03-13

My SQL依赖关系工作正常,当应用程序退出时,代理队列和服务会正确删除(我确实执行SqlDependency.Stop(...)按照终止进程之前的建议),但我注意到由SQL依赖关系应用程序关闭后,仍保留在表“sys.dm_qn_subscriptions”中。

如果我稍后(应用程序关闭后)执行应该使此订阅触发的条件,它似乎确实会触发,因为 SQL Server 在事件查看器中记录一条信息消息,大意是:

对话句柄上的查询通知对话框'{3F03B693-C0A5-E211-A97B-E06995EBDB20}.'由于以下原因关闭 错误:'<?xml version="1.0"?><Error xmlns="http://schemas.microsoft.com/SQL/ServiceBroker/Error"><Code>-8490</Code><Description>Cannot find the remote service &apos;SqlQueryNotificationService-0ea1f686-e554-4e25-aa7d-4f6d85171cc3&apos; because it does not exist.</Description></Error>'.

然后订阅将从“sys.dm_qn_subscriptions”中删除。

注意:当应用程序处于活动状态时,订阅也会正确触发。就我的应用程序而言,没有任何问题,但令我担心的是,一旦它们所依赖的代理队列/服务终止,订阅就不会在数据库系统表中自动擦除。这可能(至少)导致数据库中积累大量幻影/不死订阅记录,并导致事件查看器中不必要的 SQL Server 清理消息(每个应用程序运行都会在“sys.dm_qn_subscriptions”中生成新的不死记录)。

这种行为正常吗?事情可以变得更整洁吗?


这是正常行为。 QN 寿命很长,它们将在数据库重新启动时触发(因此在服务器重新启动后也会触发)。但SqlDependency设置一个临时服务/队列来接收通知,并且在发生崩溃时应该使用对话计时器 http://msdn.microsoft.com/en-us/library/ms187804.aspx and 内部激活 http://msdn.microsoft.com/en-us/library/ms171585%28v=sql.105%29.aspx。这两种机制相互作用的方式就是您所看到的,ERRORLOG 污染。没有什么bad发生,至少通常不会 http://rusanu.com/2007/11/10/when-it-rains-it-pours/,但显然不整齐。

事情可以变得更整洁吗?

您可以直接使用来推出自己的解决方案SqlNotificationRequest http://msdn.microsoft.com/en-us/library/system.data.sql.sqlnotificationrequest.aspx它不再提供创建服务/队列来接收您的应用程序域通知并将其路由到适当的“服务”SqlDependency.OnChange事件。根据具体情况,有可行的替代方案。但这是相当低水平的工作,你最终可能会以比原来更糟糕的方式解决问题SqlDependency解决方案...

顺便说一句,应用程序退出时无法“删除”待处理的 QN 订阅。该问题是 QN 用作通知传递机制的单向对话所固有的。正确的通知(订阅)应该由订阅者发起,并且通知应该是从目标(通知者)返回到发起者(订阅者)的响应消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关闭时 SqlDependency 订阅不会从 dm_qn_subscriptions 中删除 的相关文章

  • 有没有类似 ActiveRecord::Migration for .NET 的东西?

    我玩过 ruby on Rails ActiveRecord Migration类 我喜欢保持数据库模式版本化是多么容易 我想在我的 ASP NET 项目中做类似的事情 我想知道是否有人听说过一个可以执行以下操作的工具ActiveRecor
  • 为什么 Roslyn 中有这么多对象池的实现?

    The 对象池 http source roslyn codeplex com Microsoft CodeAnalysis ObjectPool 25601 cs 20b9a041fb2d5b00是 Roslyn C 编译器中使用的一种类
  • T-SQL 按最旧日期和唯一类别选择行

    我正在使用 Microsoft SQL 我有一个表 其中包含按两个不同类别存储的信息和一个日期 例如 ID Cat1 Cat2 Date Time Data 1 1 A 11 00 456 2 1 B 11 01 789 3 1 A 11
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • .NET 图形重影

    我正在为我们正在开发的新应用程序制作一个示例 GUI 我已经决定了语言 但我可以使用任何第 3 方 DLL 或插件或任何我需要的东西 以使 GUI 尽可能无缝地工作 他们希望它非常像 mac ubuntu vista Windows 7 所
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • SQL 查询Where Column = '' 返回表情符号字符

    好的 我有一个包含三列的表 Id Key Value 我想删除所有行Value是空的 因此 我在删除之前编写了要选择的查询 Select from Imaging ImageTag where Value 到目前为止一切都很标准 现在这是奇
  • 是否可以使用.NET 跟踪文件操作?

    当以某种方式调用文件操作 例如打开或关闭 时 我是否可以在操作系统继续请求之前处理它 如果可能的话可以通过以下方式取消它 NET http en wikipedia org wiki NET Framework 如果 NET没有这样的能力
  • SQL中如何合并多个表的数据

    我想我的处境很复杂 这是场景 我在 SQL Server 中有 3 个表 注册 学生 课程 仅供参考 没有外键 表的列是 Student 学生号 学生名 Course 课程 ID 课程名称 注册 注册 ID 学生 ID 课程 ID 课程结果
  • 仅当所有记录都匹配时 SQL 连接

    我有3张桌子 CP carthead idOrder CP cartrows idOrder idCartRow CP shipping idCartRow idShipping dateShipped 每个 idOrder 可以有多个 i
  • Sencha Touch 和远程服务器上的身份验证

    我希望收到您关于使用 PhoneGap 和 Sencha Touch 的应用程序以及带有 Active Directory 的 NET 服务器的身份验证机制的反馈 因此 我们需要在移动设备上存储用户凭据 以便用户每次希望使用该应用程序时都不
  • StreamReader 消耗的字节数

    有没有办法知道 StreamReader 使用了流的多少字节 我有一个项目 我们需要读取一个文件 该文件具有文本标题 后跟二进制数据的开头 我最初尝试读取该文件是这样的 private int dataOffset void ReadHea
  • 在这种情况下垃圾收集器会做什么? [复制]

    这个问题在这里已经有答案了 我试图了解 GC 将如何行动的两种情况 1 有两个对象 object1 和 object2 object1 引用了 object2 object2 引用了 object1 现在 这两个对象都没有被使用 GC 可以
  • EF数据库首先如何针对数据库更改更新模型?

    在班级图书馆Ado net Entity Data Model已生成 POCO 类 这些是第一次生成的 但数据库更改并未得到反映 在edmx图表右键单击并选择Update Model from Database显示新创建的表 但即使选择添加
  • 为什么该字符串的长度比其中的字符数长?

    这段代码 string a abc string b A C Console WriteLine Length a 0 a Length Console WriteLine Length b 0 b Length outputs Lengt
  • Powershell XMLDocument保存为无BOM的UTF-8

    我构建了一个 System Xml XmlDocument 类型的 XML 对象 scheme gettype IsPublic IsSerial Name BaseType True False XmlDocument System Xm
  • 从嵌入 C# 的浏览器控件获取 HTML 源代码

    我有一个嵌入在 C Windows 应用程序中的浏览器控件 我想获取渲染的 HTML 可能已被 javascript 修改 而不是原始 HTML 有什么建议么 您可以获取 HTML 并确实设置它 使用WebBrowser DocumentT
  • C# 中单个 & 符号的第二个含义是什么?

    我在 C 中使用了单个与号 来表示 检查second条件语句即使第一个是false 但以下似乎是不同的意思 of 总而言之 谁能解释一下如何i 1在下面的例子中有效吗 List
  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法

随机推荐

  • vuejs 条件包装器

    在我的 nativescript vue 应用程序中 我有一个名为 profileForm 的单个文件组件 我想以两种方式使用该组件 如果用户登录 我希望将该组件作为布局组件的插槽来编辑配置文件 否则我想要的是作为注册表 我不想创建额外的组
  • 更新多对多关联原则2

    有什么解决方案可以自动执行此操作吗 我的两个实体 class User ManyToMany targetEntity Product inversedBy users JoinTable name user product joinCol
  • 根据条件获取Python Pandas中数据帧的第一行,而不迭代整个数据帧[重复]

    这个问题在这里已经有答案了 假设我想获取数据帧的第一行 其中某一列具有负值 import pandas as pd df pd DataFrame columns c data 2 4 2 3 1 0 index df loc df c l
  • Google 未显示 React-Helmet 标题和描述

    我使用react helmet 为我的React 应用程序的每个页面提供唯一的标题和描述 当我使用开发工具检查页面时 标题在浏览器选项卡中正确呈现 标题和描述也正确呈现 然而 谷歌并没有在搜索结果中显示标题或描述 我究竟做错了什么 我研究过
  • 根据 selectInput 更改绘图图表 y 变量

    我正在创建一个简单的折线图 可以在 Shiny 中正确呈现 我现在添加了一个 selectInput 其中包含 2 个不同度量的名称 按照它们在我的数据集中出现的方式编写 我希望我的 y 变量能够相应地改变 p lt plot ly dat
  • 在一个查询中插入两个表

    如何同时将值插入到两个表中 如果不成功 两个表都应该回滚 我正在使用 SQL Server 查询过程会抛出 C 代码 您可以将这两个查询作为一个语句运行 insert into table1 values insert into table
  • 在Android项目中使用开源库

    我是 Android 编程的初学者 我正在使用 android studio 现在我想知道从 gitHub 安装开源库的最佳方法是什么 我的问题是从组织原则的角度来看 我应该为每个库创建一个新包并将所有库源代码按原样放入该包中吗 该包应该位
  • 导入类型时 Sveltekit Typescript 解析错误

    我在一个全新的 Sveltekit 项目中有这个非常简单的组件
  • Spring data mongodb 使用 MongoTemplate 从文档中删除属性

    我有一个如下所示的文档 id ObjectId 5864ddd8e38112fd70b89893 class com apic models UserReg name xxx email email protected cdn cgi l
  • REQUEST_URI 与显式路径和文件名不匹配

    真的很困惑 因为形式和语法看起来都很好 REQUEST URI 的 RewriteCond 与显式路径和文件名不匹配 隔离时 REQUEST FILENAME 的 RewriteCond 匹配得很好 我已经使用 phpinfo 验证了 RE
  • 尽管同时实现了 hashCode() 和 equals(),HashSet 仍添加了重复条目

    我有以下课程 class Point double x y constructor and other functions here public boolean equals Point p if p null return false
  • Node.js 存档器需要通过 glob 排除文件类型的语法

    使用 archiver js 适用于 Node js 我需要从递归 多子目录 存档中排除图像 这是我的代码 const zip archiver zip zlib level 9 const output await fs createWr
  • Python 脚本 - 连接到 SSH 并运行命令

    我已经知道有 Python 的 ssh 模块 但这不是我正在寻找的 我想要的是一个 python 脚本来执行以下操作 gt 连接到 用户输入 SSH 主机 gt 使用凭据 由用户提供 连接 gt 在 SSH 主机上运行命令 telnet 到
  • 使用 ST25 android SDK 进行 NFC 标签密码保护

    我正在与ST25 标签 更具体地说是 type5 标签 ST25DV64K 适用于 Android 的 ST25 SDK 有一些有趣的示例和教程 我仍然在努力使用文档末尾提供的代码示例here https www st com resour
  • MySQL - 如何使用 LIKE 搜索精确的单词匹配?

    我使用此查询来选择数据 mysql query SELECT FROM products WHERE product name LIKE search 唯一的问题是 它有时会选择比我想要的更多的东西 例如 我想选择产品 BLA 但我的查询也
  • Internet Explorer 11 与 Asp.Net 4.0 的会话问题

    我遇到一个奇怪的问题 我在 asp net 4 0 中开发了一个网站 它在所有浏览器上都能正常工作 因为我也在处理会话 因此用户必须登录才能使用该网站 在 Internet Explorer 11 上 当您访问网站 url 时 它会在 ur
  • 快速for循环与睡眠

    我有一个 Swift 4 ios 应用程序 按下按钮时会显示随机消息和照片 这工作正常 但我想创建一个无限循环来在按下按钮时显示随机消息 照片 我尝试了多种方法来实现这一目标 但没有一个有效 在主线程完成之前 标签和图像视图似乎不会更新 下
  • 让 ScrollView 与自动布局和情节提要一起使用

    我正在尝试为我想要构建的应用程序制作一个非常简单的布局 但我似乎正在努力使用 ScrollView 并通过 Storyboard 让它工作 基本上我正在尝试构建以下内容 我已经使用几个教程完成了约束 但它要么不滚动 要么看起来错误 有什么建
  • 与 React 内联自定义 `::-webkit-scrollbar`

    我怎样才能申请 webkit scrollbar在 React 中使用内联样式将伪元素添加到组件 你不能写pseudo内联选择器 需要在css中添加 参考这个link https developer mozilla org en US do
  • 关闭时 SqlDependency 订阅不会从 dm_qn_subscriptions 中删除

    My SQL依赖关系工作正常 当应用程序退出时 代理队列和服务会正确删除 我确实执行SqlDependency Stop 按照终止进程之前的建议 但我注意到由SQL依赖关系应用程序关闭后 仍保留在表 sys dm qn subscripti